我想将大量行中的值更改为其他内容。
我使用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
答案 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
更有效率
字典中的每个项目顺序。