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

2024-04-24 00:06:38 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我必须这样做:

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')

但我觉得这很长很难读。 你知道一个简单的解决办法吗?你知道吗


Tags: dataframedfcolumnreplacecatspiderpdsnake
3条回答

您可以定义替换值的dict并对传入dict的列调用^{},若要处理不存在的值,您可以传递param na_action='ignore',这将返回NaNNone,因为您希望保留现有值如果不存在,则可以调用^{}并传递原始列:

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         -
df = pd.DataFrame({'column': ['A', 'B', 'C', 'D', 'E', 'F', 'G', '-']})
mapper={'A':'cat','B':'rabit','C':'octpath','D':'spider','E':'mammoth'}
df['column']=df.column.apply(lambda x:mapper.get(x))
0        cat
1      rabit
2    octpath
3     spider
4    mammoth
5    None
6    None
7    None

如果要设置默认值

 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

涉谷人

下面是另一种使用^{}的方法:

d = {'A':'cat','B':'rabit', 'C':'octpath','D':'spider','E':'mammoth','F':'snake','G':'starfish'}
df['column'] = df['column'].replace(d)

输出:

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

相关问题 更多 >