熊猫按值分组并合并行

时间:2019-03-08 16:34:55

标签: python pandas

我有一个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()   

1 个答案:

答案 0 :(得分:2)

听起来像是网络问题,所以我使用{"1":1,"test":38,"foo":78}

networkx