【发布时间】:2019-09-20 05:54:16
【问题描述】:
我正在使用的数据如下:
Name RefSecondary RefMain
test 2 3
bet 3 4
get 1 2
set null 1
net 3 5
我做了一个非常简单的查询,它查找数据框中值的存在并构建层次结构
sys_role = 'sample.xlsx'
df = pd.read_excel(sys_role,na_filter = False).apply(lambda x: x.astype(str).str.strip())
for i in range(count):
for j in range(count):
if df.iloc[i]['RefMain'] == df.iloc[j]['RefSecondary']:
df.iloc[j, df.columns.get_loc('Name')] = "/".join([df.iloc[i]['Name'],df.iloc[j]['Name']])
j = j+1
i = i+1
我得到的结果如下:
Result RefMain
0 get/test 3
1 test/bet 4
2 set/get 2
3 set 1
4 test/net 5
这真的很慢,逻辑也不能完美运行。有没有办法让我更快地完成这项工作?
逻辑需要如下:
1)Take a value from column RefMain,and find its correspoding RefSecondary value. 2)Look up the RefSecondary value in RefMain, 3)If found Back to Step 1 and repeat. 4)This continues recursively till no value/null is found in RefSecondary column.
结果数据框应如下所示:
Result RefMain
0 set/get/test 3
1 set/get/test/bet 4
2 set/get 2
3 set 1
4 set/get/test/net 5
【问题讨论】:
-
问题不见了?
-
更新澄清
-
你的逻辑还不清楚,你能解释一下你是如何得到第二行的 RefMain=4
-
RefMain 4,对应的 RefSecondary 值为 3。现在 3 可以在 RefMain Column 中找到,其对应的 RefSecondary 为 2。现在 2 可以在 RefMain Column 中找到,其 RefSecondary 为 1。现在 1可以在 RefMain Column 中找到,其 RefSecondary 为空或不匹配。 SInce 不匹配,因此流停止并且所有值都被加起来。
标签: python pandas dataframe hierarchy