给出以下示例,如何创建计算列“parent_node”
import pandas as pd
#create dataframe with just node column
df = pd.DataFrame({
"node": [
"N07 S40 G S06 S29 G N13", "N07", "N07 S28", "N07 S28 G N06 S16",
"N08 N05", "N07 S28 G N05", "N08 N05 G N27", "N07 S28 G N05 N03",
"N07 S28 G N05 N03 G S31", "N07 S28 G N06 S16 G S32"
]
})
#create column called count_of_spaces_in_node
def countSpaces(cell):
try:
return cell.count(" ")
except:
return 0
df["count_of_spaces_in_node"] = df["node"].apply(countSpaces)
#sort by count_of_spaces_in_node, then by node
df = df.sort_values(by=["count_of_spaces_in_node", "node"])
#reset index
df = df.reset_index(drop=True)
#create column called length_of_node
df['length_of_node'] = df['node'].str.len()
生成的df如下所示:
名为“父节点”的新计算列如下所示:
以下是以最后一行为例创建父节点列的逻辑:
值为6。现在看看这个层次结构:
hierarchy_distinct_count_of_spaces_in_node = df.count_of_spaces_in_node.unique()
#result: array([0, 1, 3, 4, 6], dtype=int64)
在这个窗口中的每一行中,考虑节点和LangthyOf节点。将该节点与原始节点的左长度\u node-number-of-characters进行比较。(例如N07 S28 G N05 N03
=N07 S40 G S06 S29
?否)如果存在匹配项,则此节点将成为父节点列的值
node | count_of_spaces_in_node | length_of_node |
---|---|---|
N07 S28 G N05 | 3 | 13 |
N08 N05 G N27 | 3 | 13 |
在这个窗口中的每一行中,考虑节点和LangthyOf节点。将该节点与原始节点的左长度\u node-number-of-characters进行比较。(例如N07 S28 G N05
=N07 S40 G S06
?否)如果存在匹配项,则此节点将成为父节点列的值
node | count_of_spaces_in_node | length_of_node |
---|---|---|
N07 S28 | 1 | 7 |
N08 N05 | 1 | 7 |
在这个窗口中的每一行中,考虑节点和LangthyOf节点。将该节点与原始节点的左长度\u node-number-of-characters进行比较。(例如N07 S28
=N07 S40
?否)如果存在匹配项,则此节点将成为父节点列的值
node | count_of_spaces_in_node | length_of_node |
---|---|---|
N07 | 0 | 3 |
在这个窗口中的每一行中,考虑节点和LangthyOf节点。将该节点与原始节点的左长度\u node-number-of-characters进行比较。(例如,N07
=N07
是否?是!因此N07
将成为父节点值。)如果没有匹配项,在考虑最后一个0窗口后,将父节点保留为空或NULL
旁注:这可能对回答上述问题没有帮助,但可能是一个有趣的上下文。我正在为我正在研究的game design做一些an opening book AI分析
假设
N08 N05 G N27
将有一个父节点,因为N08 N05
生成了下面的代码段试试下面的代码片段
相关问题 更多 >
编程相关推荐