Python 我可以用dataframe一次替换一些值吗?

Python 我可以用dataframe一次替换一些值吗?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,现在我必须这样做: df = pd.DataFrame({'column': ['A', 'B', 'C', 'D', 'E', 'F', 'G', '-']}) df['column'] = df['column'].str.replace('A', 'cat').replace('B', 'rabit').replace('C', 'octpath').replace('D', 'spider').replace('E', 'mammoth').replace('F', 'snake').r

现在我必须这样做:

df = pd.DataFrame({'column': ['A', 'B', 'C', 'D', 'E', 'F', 'G', '-']})
df['column'] = df['column'].str.replace('A', 'cat').replace('B', 'rabit').replace('C', 'octpath').replace('D', 'spider').replace('E', 'mammoth').replace('F', 'snake').replace('G', 'starfish')
但我认为这很长很难理解。
您知道一个简单的解决方案吗?

您可以定义替换值的dict并调用传入dict的列,要处理不存在的值,您可以传递参数na_action='ignore',这将返回NaN或None,因为您希望保留现有值。如果不存在,您可以调用并传递原始列:

In[60]:
df = pd.DataFrame({'column': ['A', 'B', 'C', 'D', 'E', 'F', 'G', '-']})
d = {'A':'cat','B':'rabit', 'C':'octpath','D':'spider','E':'mammoth','F':'snake','G':'starfish'}
df['column'] = df['column'].map(d, na_action='ignore').fillna(df['column'])
df

Out[60]: 
     column
0       cat
1     rabit
2   octpath
3    spider
4   mammoth
5     snake
6  starfish
7         -

您可以定义替换值的dict并调用传入dict的列,要处理不存在的值,您可以传递参数na_action='ignore',这将返回NaN或None,因为您希望保留现有值。如果不存在,您可以调用并传递原始列:

In[60]:
df = pd.DataFrame({'column': ['A', 'B', 'C', 'D', 'E', 'F', 'G', '-']})
d = {'A':'cat','B':'rabit', 'C':'octpath','D':'spider','E':'mammoth','F':'snake','G':'starfish'}
df['column'] = df['column'].map(d, na_action='ignore').fillna(df['column'])
df

Out[60]: 
     column
0       cat
1     rabit
2   octpath
3    spider
4   mammoth
5     snake
6  starfish
7         -

以下是另一种方法,使用:

输出:

    column
0       cat
1     rabit
2   octpath
3    spider
4   mammoth
5     snake
6  starfish
7         -

以下是另一种方法,使用:

输出:

    column
0       cat
1     rabit
2   octpath
3    spider
4   mammoth
5     snake
6  starfish
7         -
如果要设置默认值

 df['column']=df.column.apply(lambda x:mapper.get(x) if mapper.get(x) is not None else "pandas")

  df.column
  0        cat
  1      rabit
  2    octpath
  3     spider
  4    mammoth
  5     pandas
  6     pandas
  7     pandas
涉谷的格雷廷

如果要设置默认值

 df['column']=df.column.apply(lambda x:mapper.get(x) if mapper.get(x) is not None else "pandas")

  df.column
  0        cat
  1      rabit
  2    octpath
  3     spider
  4    mammoth
  5     pandas
  6     pandas
  7     pandas

来自涉谷的greatings

谢谢,哇,我知道了,我会用地图。“很好,谢谢你。”MaikoOhkawa说どういたしまして谢谢,哇,我会用地图,我明白了。“很好,谢谢你。”MaikoOhkawa说どういたしまして太棒了。我不知道替换可以接收dic。这是最简单的。谢谢,太棒了。我不知道替换可以接收dic。这是最简单的。谢谢,谢谢。我在需要的时候使用lambda。谢谢,谢谢。我在需要的时候使用lambda。非常感谢。