gpt4 book ai didi

python - Pandas :如何映射列表列中的值?

转载 作者:行者123 更新时间:2023-11-28 20:13:51 24 4
gpt4 key购买 nike

pandas 数据框中的一列包含值列表。

使用字典,我想使用字典创建一个包含映射值的新列,对于不在字典中的任何值,这些值将被删除。

这是一个最小的例子:

数据框的设置

df = pd.DataFrame(data={ 'B': ['x', 'y', 'z']})
df.at[0, 'B'] = ['jki', 'gg4', 'k6k']
df.at[1, 'B'] = ['2f4', 'gg4', 'g24']
df.at[2, 'B'] = ['1k1', 'g24', '1k1', '2f4']

结果在

df

B
0 [jki, gg4, k6k]
1 [2f4, gg4, g24]
2 [1k1, g24, 1k1, 2f4]

字典的建立

conv = { 'jki': 1, 'gg4': 2, '2f4': 3 , 'g24':4, }

如果列不是列表,将使用此代码

df['MappedA'] = df.B.map(conv)

但是由于该列包含列表,所以不能使用该代码

这是我希望的结果

                      B                  MappedA
0 [jki, gg4, k6k] [ 1 , 2 ]
1 [2f4, gg4, g24] [3, 2, 4]
2 [1k1, g24, 1k1, 2f4] [ 4 , 3 ]

最佳答案

您可以使用 lambda 函数并为每个行列表应用 map 函数来获取字典值

df.B.apply(lambda x:list(filter(None,map(conv.get,x))))

输出:

0       [1, 2]
1 [3, 2, 4]
2 [4, 3]
Name: B, dtype: object

关于python - Pandas :如何映射列表列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250392/

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