gpt4 book ai didi

python - 在 Python 中从一张表转换到另一张表

转载 作者:行者123 更新时间:2023-12-04 13:27:16 25 4
gpt4 key购买 nike

Original Table :

A        B 
-----------
1 2
1 4
2 3
3 5
3 6
2 7
5 100
6 100
7 100
4 100
Table I want to generate :
1     2     3     5     100
1 2 3 6 100
1 2 7 100 NAN
1 4 100 NAN NAN
你好!
我正在尝试根据我拥有的数据集在 python 中创建一棵树(请参阅原始表)。这里有关系 - 1 映射到 2 映射到 3 映射到 5 映射到 100。(100 表示叶节点或树的路径的结尾,1 始终是根节点 - 所有路径都以 1 开头)我首先想要创建具有树的完整路径的数组(请参阅我想要获取的表),我尝试使用递归函数进行此操作,但它变得非常复杂。关于我如何继续的任何想法?或者,如果有一个内置函数来执行从第一个表到第二个表的转换。
(主要目标:从“原始表”到“我想生成的表”
到目前为止,我已经在这里附上了我的代码。
import pandas as pd
import numpy as np

data = {'A': [1, 1,2,3,3,2,1,6,5,7,4],
'B': [2,4,3,5,6,7,100,100,100,100]
}

df = pd.DataFrame (data, columns = ['A','B'])

print (df)

def filt(df,val):
return df[df.A==val]

c2=1

global vec
vec = np.array([c2])
def search(c2):
temp_df= filt(df,c2)
print(temp_df)
a=temp_df[temp_df.columns[1]]
for row in range(temp_df.shape[0]):

if a.iloc[row]!=100:
global vec
vec=np.append(vec,a.iloc[row])
search(a.iloc[row])

else:
vec=np.append(vec,a.iloc[row])
print(vec)
vec=vec[:-2]


search(c2)

最佳答案

您可以使用递归生成器函数:

import pandas as pd
t1 = [[1, 2], [1, 4], [2, 3], [3, 5], [3, 6], [2, 7], [5, 100], [6, 100], [7, 100], [4, 100]]
def get_paths(n, c = []):
if not (v:=[b for a, b in t1 if a == n]):
yield c + [n]
else:
yield from [i for b in v for i in get_paths(b, c+[n])]

m = max(map(len, r:=list(get_paths(1))))
df = pd.DataFrame([i+([None]*(m - len(i))) for i in r])
输出:
   0  1    2     3     4
0 1 2 3 5 100
1 1 2 3 6 100
2 1 2 7 100 NaN
3 1 4 100 NaN NaN

关于python - 在 Python 中从一张表转换到另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67502124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com