得到两个Pandas数据帧的每一个组合?

2024-04-20 13:43:00 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个数据帧:

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'person':[1,1,2,2,3], 'sub_id':[20,21,21,21,21], 'otherval':[np.nan, np.nan, np.nan, np.nan, np.nan], 'other_stuff':[1,1,1,1,1]}, columns=['person','sub_id','otherval','other_stuff'])

df2 = pd.DataFrame({'sub_id':[20,21,22,23,24,25], 'otherval':[8,9,10,11,12,13]})

我希望df1中的person的所有级别都有{}(包括任何副本)以及它们各自来自{}的{}。换句话说,我的合并结果应该是:

^{pr2}$

请注意person==2如何有两个行,其中sub_id==21。在


Tags: 数据importnumpyiddataframepandasasnp
1条回答
网友
1楼 · 发布于 2024-04-20 13:43:00

您可以通过以下方式获得所需的输出:

df3 = df1.groupby('person').apply(lambda x: pd.merge(x,df2, on='sub_id', how='right')).reset_index(level = (0,1), drop = True)
df3.person = df3.person.ffill().astype(int)
print df3

这将产生:

^{pr2}$

我希望这有帮助。在

相关问题 更多 >