我有一个DataFrame,我想合并包含相同值的行
toy = [
[10, 11],
[21, 22],
[11, 15],
[22, 23],
[15, 33]
]
toy = pd.DataFrame(toy, columns = ['ID1', 'ID2'])
ID1 ID2
0 10 11
1 21 22
2 11 15
3 22 23
4 15 33
我希望得到的是
0 1 2 3
0 10 11 15 33.0
1 21 22 23 NaN
因此合并其中包含任何相同值的行。
我的解决方案非常优雅,不,我正在寻找正确的方法来实现……递归?通过...分组?嗯..
#### Feel Free to NOT read this... ###
for k in range(100):
print(k)
merge_df = []
merged_indices = []
for i, row in toy.iterrows():
if i in merged_indices:
continue
cp = toy.copy()
merge_rows = cp[cp.isin(row.values)].dropna(how="all")
merged_indices = merged_indices + list(merge_rows.index)
merge_rows = np.array(toy.iloc[merge_rows.index]).flatten()
merge_rows = np.unique(merge_rows)
merge_df.append(merge_rows)
if toy.shape[0] == len(merge_df):
break
toy = pd.DataFrame(merge_df).copy()
答案 0 :(得分:2)
听起来像是网络问题,所以我使用{"1":1,"test":38,"foo":78}
networkx