gpt4 book ai didi

python-3.x - 根据条件从另一个数据框列中获取值

转载 作者:行者123 更新时间:2023-12-01 02:25:59 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

>>> df1
a b
0 [1, 2, 3] 10
1 [4, 5, 6] 20
2 [7, 8] 30

还有一个类似的:

>>> df2
a
0 1
1 2
2 3
3 4
4 5

如果 df2 的“a”列值在 df1 的“a”列中,我需要从 df1 的“b”列在 df2 中创建“c”列。在 df1 中,“a”列的每个元组都是一个列表。

我尝试通过以下 url 实现,但到目前为止一无所获: https://medium.com/@Imaadmkhan1/using-pandas-to-create-a-conditional-column-by-selecting-multiple-columns-in-two-different-b50886fabb7d

预期结果是

>>> df2
a c
0 1 10
1 2 10
2 3 10
3 4 20
4 5 20

最佳答案

使用Series.map通过将 df1 中的值展平到字典中:

d = {c: b for a, b in zip(df1['a'], df1['b']) for c in a}
print (d)
{1: 10, 2: 10, 3: 10, 4: 20, 5: 20, 6: 20, 7: 30, 8: 30}

df2['new'] = df2['a'].map(d)
print (df2)
a new
0 1 10
1 2 10
2 3 10
3 4 20
4 5 20

编辑:我认为问题是 a 列列表中的混合整数,解决方案是使用 if/else 来测试新字典:

d = {}
for a, b in zip(df1['a'], df1['b']):
if isinstance(a, list):
for c in a:
d[c] = b
else:
d[a] = b

df2['new'] = df2['a'].map(d)

关于python-3.x - 根据条件从另一个数据框列中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512405/

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