【发布时间】:2021-09-15 19:30:36
【问题描述】:
我有一个包含大约 150K 观察值的数据框。如果存在循环引用,目标是找到成对的行。我在下面编写了这段代码,它在一个小数据集上完成了这项工作,但速度非常慢。有人可以帮助使这段代码运行得更快吗?
这里的想法是,如果A引用B和B引用A,它们应该是链接的。
例子:
df_test = pd.DataFrame({'c1': ['A', 'C', 'D', 'B'], 'c2': ['B', 'D', 'C', 'A'], 'id':[1,2,3,4]})
# I created a "direction" knowing which way it is being referenced
df_test['direction'] = df_test['c1'] + df_test['c2']
new_df = pd.DataFrame()
for index, row in df_test.iterrows():
direction_to_serach = row['c2']+row['c1']
df_test.drop(index, inplace=True)
for index2, row2 in df_test.iterrows():
if row2['direction'] == direction_to_serach:
df_temp = pd.concat([pd.DataFrame(row.values).T,pd.DataFrame(row2.values).T], axis=1, ignore_index=True)
new_df = new_df.append(df_temp)
df_test.drop(index2, inplace=True)
if df_test.empty:
break
【问题讨论】:
-
当您提出问题时,请花时间回答那些试图帮助您的人。 Take the tour
标签: python pandas bigdata data-analysis network-analysis