Python 尝试联接2个数据帧,并将某些数据作为数组存储在一个单元格中
我有以下3个数据帧: 第一数据帧:Python 尝试联接2个数据帧,并将某些数据作为数组存储在一个单元格中,python,pandas,Python,Pandas,我有以下3个数据帧: 第一数据帧: DF1: iID data1 data2 10 blue green 11 red teal DF2: iID rH repH 10 50 60 10 60 70 11 70 50 第二数据帧: DF1: iID data1 data2 10 blue green 11 red teal DF2: iID rH repH 10 50 60 10 60 70 11 70 50 (
DF1:
iID data1 data2
10 blue green
11 red teal
DF2:
iID rH repH
10 50 60
10 60 70
11 70 50
第二数据帧:
DF1:
iID data1 data2
10 blue green
11 red teal
DF2:
iID rH repH
10 50 60
10 60 70
11 70 50
(DF2 to每个iID可以有1行或2行)
我希望我的输出DF在一个单元格中为rH和repH设置一个数组
do输出类似于:
输出DF:
iID data1 data2 rH repH
10 blue green [50,60] [60,70]
11 red teal [70] [50]
IIUC
值得添加以下附加组件 连接,默认情况下为左连接:
df1.join(df2)
pd.concat([df1, df2], axis=1)
或concat,默认情况下为外部联接:
df1.join(df2)
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
如果数字是唯一的,是否有办法只添加到数组中?因此,如果是[50,50],is应该使用
set
df1.merge(df2.groupby('iID').agg(lambda x:set(x.tolist()).reset_index())显示[50]@JSnoob