Python 合并列表列上的两个数据帧
我有两个数据帧Python 合并列表列上的两个数据帧,python,pandas,list,dataframe,merge,Python,Pandas,List,Dataframe,Merge,我有两个数据帧 df = pd.DataFrame([[1,2,3,[4,5]],[6,7,8,[9,10]]], columns=['a','b','c','d']) df2 = pd.DataFrame([[4,'abc'],[5,'ef'], [10,'g'], [12,'hijk']], columns=['a_2','b_2']) In [151]: df Out[151]: a b c d 0 1 2 3 [4, 5] 1 6 7 8
df = pd.DataFrame([[1,2,3,[4,5]],[6,7,8,[9,10]]], columns=['a','b','c','d'])
df2 = pd.DataFrame([[4,'abc'],[5,'ef'], [10,'g'], [12,'hijk']], columns=['a_2','b_2'])
In [151]: df
Out[151]:
a b c d
0 1 2 3 [4, 5]
1 6 7 8 [9, 10]
In [152]: df2
Out[152]:
a_2 b_2
0 4 abc
1 5 ef
2 10 g
3 12 hijk
我想根据df的“d”列合并这两个元素,并得到以下输出-
df3 = pd.DataFrame([[1,2,3,[4,5],['abc','ef']],[6,7,8,[9,10],['g']]], columns=['a','b','c','d','b_2'])
In [153]: df3
Out[153]:
a b c d b_2
0 1 2 3 [4, 5] [abc, ef]
1 6 7 8 [9, 10] [g]
我确实尝试了“合并”,但没有得到所需的结果。这并不完全是合并问题,但我会使用一个调用: 考虑到问题的不可矢量化性质,列表理解应该相当快
s = df2.set_index('a_2')['b_2'] # mapping to use
[[s.get(y) for y in x if y in s] for x in df['d']]
# [['abc', 'ef'], ['g']]
# df['b_2'] = [[s.get(y) for y in x if y in s] for x in df['d']]
df3 = df.assign(b_2=[[s.get(y) for y in x if y in s] for x in df['d']])
df3
a b c d b_2
0 1 2 3 [4, 5] [abc, ef]
1 6 7 8 [9, 10] [g]