尝试连接2个数据帧,并将某些数据作为数组存储在

2024-10-06 07:11:39 发布

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

我有以下3个数据帧:

第一个数据帧:

DF1: 

iID data1 data2

10  blue  green

11  red   teal

第二个数据帧:

DF2:

iID rH repH

10  50 60 

10  60 70 

11  70 50 

(DF2到每个iID可以有1行或2行)

我希望我的输出DF在一个单元格中为rH和repH设置一个数组

do输出类似于:

输出测向:

iID data1 data2 rH      repH

10  blue  green [50,60] [60,70]

11  red   teal  [70]    [50]

Tags: 数据dfgreenbluered数组dorh
2条回答

值得添加以下附加组件

联接,默认情况下为左联接:

df1.join(df2)

或concat,默认情况下为外部连接:

pd.concat([df1, df2], axis=1)

只是添加更多的叙述:

>>> df1 = pd.DataFrame({'a':range(6),
...                     'b':[5,3,6,9,2,4]}, index=list('abcdef'))
>>> df2 = pd.DataFrame({'c':range(4),
...                     'd':[10,20,30, 40]}, index=list('abhi'))
>>>
>>>
>>> df1
   a  b
a  0  5
b  1  3
c  2  6
d  3  9
e  4  2
f  5  4
>>> df2
   c   d
a  0  10
b  1  20
h  2  30
i  3  40
>>> df4 = df1.join(df2)
>>> df4
   a  b    c     d
a  0  5  0.0  10.0
b  1  3  1.0  20.0
c  2  6  NaN   NaN
d  3  9  NaN   NaN
e  4  2  NaN   NaN
f  5  4  NaN   NaN

IIUC公司

df1.merge(df2.groupby('iID').agg(lambda x : x.tolist()).reset_index())
Out[144]: 
   iID data1  data2        rH      repH
0   10  blue  green  [50, 60]  [60, 70]
1   11   red   teal      [70]      [50]

相关问题 更多 >