gpt4 book ai didi

python - Pandas 在单独的列中合并带有 id 的行

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:22 25 4
gpt4 key购买 nike

这里完全崩溃了,需要一些帮助。

我有一个包含 +10m 行和大约 150 列的 DataFrame,带有两个 ID,如下所示:

df = pd.DataFrame({'id1' : [1,2,5,3,6,4]
,'id2' : [2,1,np.nan,4,np.nan,3]
,'num' : [123, 3231, 123, 231, 6534,2394]})


id1 id2 num
0 1 2.0 123
1 2 1.0 3231
2 5 NaN 123
3 3 4.0 231
4 6 NaN 6534
5 4 3.0 2394

其中行索引 0 和 1 是给定 id1 和 id2 的一对,行索引 3 和 5 是一对以相同的方式。我想要下表,其中第二行对与第一行对合并

df = pd.DataFrame({'id1' : [1,5,3,6]
,'id2' : [2,np.nan,3,np.nan]
,'num' : [123, 123, 231, 6534]
,'2num' : [3231, np.nan, 2394, np.nan,]})


id1 id2 num 2_num
0 1 2.0 123 3231.0
1 5 NaN 123 NaN
2 3 3.0 231 2394.0
3 6 NaN 6534 NaN

如何使用 id1 和 id2 并将“id row 2”中的所有后续列标记为“2_”?

最佳答案

这是一种基于合并的方法,(感谢@pirSquared 的改进)。即

ndf = df.merge(df, 'left', left_on=['id1', 'id2'], right_on=['id2', 'id1'], suffixes=['', '_2']).drop(['id1_2', 'id2_2'], 1)
cols = ['id1','id2']
ndf[cols] = np.sort(ndf[cols],1)
new = ndf.drop_duplicates(subset=['id1','id2'],keep='first')
  id1  id2   num   num_20  1.0  2.0   123  3231.02  5.0  NaN   123     NaN3  3.0  4.0   231  2394.04  6.0  NaN  6534     NaN

关于python - Pandas 在单独的列中合并带有 id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464420/

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