gpt4 book ai didi

python - Pandas 合并两个 df

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:58 25 4
gpt4 key购买 nike

我有两个 DataFrame

df1 具有以下形式

    ID    col1    col2
0 1 2 10
1 3 1 21

df2 看起来像这样

    ID    field1    field2
0 1 4 1
1 1 3 3
2 3 5 4
3 3 9 5
4 1 2 0

我想连接两个 DataFrame,但每个 ID 只有一行,所以它看起来像这样:

    ID   col1    col2   field1_1    field2_1    field1_2    field2_2    field1_3    field2_3
0 1 2 10 4 1 3 3 2 0
1 3 1 21 5 4 9 5

我尝试过合并和旋转数据df.pivot(index=df1.index, columns='ID')但因为长度是可变的,所以我变成了 ValueError。

ValueError:所有数组的长度必须相同

最佳答案

在不过度格式化的情况下,我们希望合并并添加一个对 'ID' 进行计数的多重索引级别。

df = df1.merge(df2)
cc = df.groupby('ID').cumcount()
df.set_index(['ID', 'col1', 'col2', cc]).unstack()

field1 field2
0 1 2 0 1 2
ID col1 col2
1 2 10 4.0 3.0 2.0 1.0 3.0 0.0
3 1 21 5.0 9.0 NaN 4.0 5.0 NaN

我们可以通过以下方式确定格式:

df = df1.merge(df2)
cc = df.groupby('ID').cumcount() + 1
d1 = df.set_index(['ID', 'col1', 'col2', cc]).unstack().sort_index(axis=1, level=1)
d1.columns = d1.columns.to_series().map('{0[0]}_{0[1]}'.format)
d1.reset_index()

ID col1 col2 field1_1 field2_1 field1_2 field2_2 field1_3 field2_3
0 1 2 10 4.0 1.0 3.0 3.0 2.0 0.0
1 3 1 21 5.0 4.0 9.0 5.0 NaN NaN

关于python - Pandas 合并两个 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394583/

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