Python 在数据帧中,如何用元素y替换所有元素x?
我有一个大数据框Python 在数据帧中,如何用元素y替换所有元素x?,python,pandas,search,dataframe,replace,Python,Pandas,Search,Dataframe,Replace,我有一个大数据框df,14列*800行。独立地,我有一个包含两列的文件(假设包含这些条目): 我想搜索数据框df,并用右列同一行中的对应元素替换左列中出现的所有值-意味着,无论我在数据框中找到“car”作为条目,我都将其替换为“one”,无论我在哪里找到“bus”,我都将其替换为“two”,等等。我找到了熊猫的dunctions.replace和.isin,但我缺乏将它们组合起来的技能 谁能告诉我如何在数据帧中进行替换 建议的解决方案: 将(汽车、公共汽车、自行车等)和(一、二、三等)列读入n
df
,14列*800行。独立地,我有一个包含两列的文件(假设包含这些条目):
我想搜索数据框df
,并用右列同一行中的对应元素替换左列中出现的所有值-意味着,无论我在数据框中找到“car”作为条目,我都将其替换为“one”,无论我在哪里找到“bus”,我都将其替换为“two”,等等。我找到了熊猫的dunctions.replace和.isin,但我缺乏将它们组合起来的技能
谁能告诉我如何在数据帧中进行替换
建议的解决方案: 将(汽车、公共汽车、自行车等)和(一、二、三等)列读入numpy数组列表,例如(汽车、公共汽车、自行车等)读入旧列表,将(一、二、三等)读入新列表。例如,这在pandas pd.read_fwf中是可行的。然后可以使用“替换”功能的便捷功能:
df.replace(to_replace=list_old, value=list_new, inplace=True)
这就成功了!请注意,它还负责按索引进行匹配(list_old[n]替换为list_new[n])例如,您将文件加载到数据帧
df1
。首先使用它生成映射:
mapping = dict(df1[['col1', 'col2'].values)
或者
现在调用df。在实际数据帧上替换,比如说df2
:
df2.replace(mapping)
或者,您可以使用df.map
-将不匹配项转换为NaN
df2.map(mapping)
我想您可以通过系列
创建:
或通过命令
:
df = df.replace(df.set_index('col1')['col2'].to_dict())
样本:
df = pd.DataFrame({'col1':['car','bus','bike'],
'col2':['one','two','three'],
'col3':['car','bike','bike']})
print (df)
col1 col2 col3
0 car one car
1 bus two bike
2 bike three bike
df = df.replace(df.set_index('col1')['col2'])
print (df)
col1 col2 col3
0 one one one
1 two two three
2 three three three
或者mapping=df1。设置索引('col1')['col2']
df = df.replace(df.set_index('col1')['col2'])
df = df.replace(df.set_index('col1')['col2'].to_dict())
df = pd.DataFrame({'col1':['car','bus','bike'],
'col2':['one','two','three'],
'col3':['car','bike','bike']})
print (df)
col1 col2 col3
0 car one car
1 bus two bike
2 bike three bike
df = df.replace(df.set_index('col1')['col2'])
print (df)
col1 col2 col3
0 one one one
1 two two three
2 three three three