gpt4 book ai didi

python - 创建具有正确映射的列

转载 作者:行者123 更新时间:2023-11-30 22:32:24 24 4
gpt4 key购买 nike

我有一个数据框 df1,其中一列是“值”。看起来像 -

values
['acd3f','rt5gh8','5ty7e']
['rt5gh8','t67ui']

我有另一个数据框 df2,其中包含两列“0”和“1”,其值类似于 -

0         1
acd3f I am cool
rt5gh8 I am not cool
5ty7e ok_sir
t67ui no_sir

我想修改 df1 以添加一个新列“value_names”,它应该看起来像 -

values                        value_names
['acd3f','rt5gh8','5ty7e'] ['I am cool','I am not cool','ok_sir']
['rt5gh8','t67ui'] ['I am not cool','no_sir']

我正在尝试以下代码 -

df1['value_names'] = df1['values'].replace(df2.set_index('0')['1'].dropna())

它似乎不起作用并给我一个错误 -

KeyError: '1'

注意:
基本上,我之前拥有的不是 df2 而是带有映射的列表。我将其转换为数据框 df2,并自动分配 df2 中的列名称“0”和“1”。

最佳答案

创建一个字典(映射),将键映射到 df2 中的值(列 0 是键,列 1 是它们对应的值。

然后使用嵌套列表理解来查找值并使用分配将其附加到df1

df1 = pd.DataFrame({'values': [['acd3f','rt5gh8','5ty7e'], ['rt5gh8','t67ui']]})

df2 = pd.DataFrame({0: ['acd3f', 'rt5gh8', '5ty7e', 't67ui'],
1: ["I am cool", "I am not cool", "ok_sir", "no_sir"]})

mapping = {k: v for k, v in zip(df2[0], df2[1])}

>>> df1.assign(value_names=[[mapping.get(val) for val in sublist]
for sublist in df1['values'] ])
values value_names
0 [acd3f, rt5gh8, 5ty7e] [I am cool, I am not cool, ok_sir]
1 [rt5gh8, t67ui] [I am not cool, no_sir]

关于python - 创建具有正确映射的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469678/

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