gpt4 book ai didi

python - 创建一个列,其中每行的值是指定字典的键,基于现有列是否包含该字典值作为子字符串?

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

假设我有以下字典dict = {'a': ['tool', 'device'], 'b': ['food', 'beverage']},

我有一个数据框,其中一列的前两行值为“工具”'食物'我想创建一个新列,其中第一个值为 a,第二个为 b

执行此操作的最佳方法是什么?

最佳答案

首先不要使用可变名称dict,因为内置函数(python 代码字)。然后是 dict 的交换值 - 带有新 dict 键的值,通过 Series.str.findall 从列中获取值通过 dict 和 Series.map 的键按新列的字典:

d = {'a': ['tool', 'device'], 'b': ['food', 'beverage']}
df = pd.DataFrame({'col':['tools','foods']})

d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
print (d1)
{'tool': 'a', 'device': 'a', 'food': 'b', 'beverage': 'b'}

df['new'] = df['col'].str.findall('|'.join(d1.keys())).str[0].map(d1)
print (df)
col new
0 tools a
1 foods b

或者:

df['new'] = df['col'].str.extract('({})'.format('|'.join(d1.keys())), expand=False).map(d1)

关于python - 创建一个列,其中每行的值是指定字典的键,基于现有列是否包含该字典值作为子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344072/

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