我有一个数据帧df1,其中一列是“values”。看起来像-
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\u 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”被自动分配
亚历山大守则的一个简单版本(imo):
您可以从使用
df2.values
检索的2Dnp
数组创建映射然后,使用
df.assign
创建value_names
列表创建一个字典(
mapping
),将键映射到它们的值,从df2
(列0
是键,列1
是它们对应的值然后使用嵌套列表理解来查找值并使用
assign
将其附加到df1
相关问题 更多 >
编程相关推荐