这里完全崩溃了,需要一些帮助。
我有一个包含 +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_2 0 1.0 2.0 123 3231.0 2 5.0 NaN 123 NaN 3 3.0 4.0 231 2394.0 4 6.0 NaN 6534 NaN
关于python - Pandas 在单独的列中合并带有 id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464420/