gpt4 book ai didi

python - 在一列列表中合并两个数据框

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:06 24 4
gpt4 key购买 nike

我有两个数据框。

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]

我确实尝试过“合并”,但没有得到所需的结果。

最佳答案

这不完全是一个合并问题,但我会使用 list comprehension 来做到这一点那叫Series.get :

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]

Evidence suggests考虑到您的问题的不可向量化性质,列表理解应该相当快。

关于python - 在一列列表中合并两个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56573271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com