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