替换csv文件中的值

时间:2018-03-12 14:34:25

标签: python pandas

我想将大量行中的值更改为其他内容。

我使用pandas从csv打开我的数据,如下所示:

import pandas as pd
import numpy as np
import os

df = pd.read_csv('data.csv', encoding = "ISO-8859-") 

然后我切换DF更改列名:

df1 = df['col 1', 'col 2', 'col 3' 'col 4', 'col 5']

删除无用的列名:

df2 = df1.columns.str.strip('col') 
output:
1, 2, 3, 4, 5
a  b  a  b  c
a  c  a  a  c
b  a  c  a  b

替换值,以便我可以更轻松地报告数据并替换无用的答案。

df1 = df1.replace('c', None)
df1 = df1.replace('a', 's')
df1 = df1.replace('b', 'n')

现在我的问题是,当我剥离列时,我的数据帧丢失了所有值,当我尝试将新df重新连接到前一个时,它没有工作。

我不确定如何在多个值上使用df.replace,当我在不同的字符串中运行它并尝试将其附加/合并到当前的DF中时,它并没有真正起作用。< / p>

之后的输出是:

   output:
    1, 2, 3, 4, 5
    s  n  s  n  NaN
    n  NaN  s  s  NaN
    n  s  NaN  s  n

2 个答案:

答案 0 :(得分:2)

您可以将条件传递给dict

df.replace({'c': None,'a':'s','b':'n'})
Out[164]: 
   1     2     3  4     5
0  s     n     s  n  None
1  s  None     s  s  None
2  n     s  None  s     n

答案 1 :(得分:1)

一种方法是使用与pd.DataFrame.applymap结合的字典,它应用元素元素。

d = {'c': None, 'a': 's', 'b': 'n'}

res = df.applymap(d.get)

#    1     2     3  4     5
# 0  s     n     s  n  None
# 1  s  None     s  s  None
# 2  n     s  None  s     n

<强>解释

  • df.applymap效果很好,因为所有正在替换您的值,因此可以在每个元素上应用d.get,而无需担心找不到密钥。
  • 它可能比取代df.replace更有效率 字典中的每个项目顺序。