【发布时间】:2014-08-19 16:42:54
【问题描述】:
我遇到了 Pandas 无法正确替换某些文本的问题...
# Create blank column
csvdata["CTemp"] = ""
# Create a copy of the data in "CDPure"
dcol = csvdata.CDPure
# Fill "CTemp" with the data from "CDPure" and replace and/or remove certain parts
csvdata['CTemp'] = dcol.str.replace(" (AMI)", "").replace(" N/A", "Non")
但是,当我打印它时,它并没有通过运行print csvdata[-50:].head(50) 替换任何内容,如下所示
Pole KI DE Score STAT CTemp
4429 NaN NaN NaN 42 NaN Data N/A
4430 NaN NaN NaN 23.43 NaN Data (AMI)
4431 NaN NaN NaN 7.05 NaN Data (AMI)
4432 NaN NaN NaN 9.78 NaN Data
4433 NaN NaN NaN 169.68 NaN Data (AMI)
4434 NaN NaN NaN 26.29 NaN Data N/A
4435 NaN NaN NaN 83.11 NaN Data N/A
注意:CSV 相当大,所以我必须使用pandas.set_option('display.max_columns', 250) 才能打印以上内容。
有人知道我怎样才能让它在熊猫中正确替换这些部分吗?
编辑,我试过 .str.replace("", "") 并尝试了 .replace("", "")
CSV 示例:
No,CDPure,Blank
1,Data Test,
2,Test N/A,
3,Data N/A,
4,Test Data,
5,Bla,
5,Stack,
6,Over (AMI),
7,Flow (AMI),
8,Test (AMI),
9,Data,
10,Ryflex (AMI),
示例代码:
# Import pandas
import pandas
# Open csv (I have to keep it all as dtype object otherwise I can't do the rest of my script)
csvdata = pandas.read_csv('test.csv', dtype=object)
# Create blank column
csvdata["CTemp"] = ""
# Create a copy of the data in "CDPure"
dcol = csvdata.CDPure
# Fill "CTemp" with the data from "CDPure" and replace and/or remove certain parts
csvdata['CTemp'] = dcol.str.replace(" (AMI)", "").str.replace(" N/A", " Non")
# Print
print csvdata.head(11)
输出:
No CDPure Blank CTemp
0 1 Data Test NaN Data Test
1 2 Test N/A NaN Test Non
2 3 Data N/A NaN Data Non
3 4 Test Data NaN Test Data
4 5 Bla NaN Bla
5 5 Stack NaN Stack
6 6 Over (AMI) NaN Over (AMI)
7 7 Flow (AMI) NaN Flow (AMI)
8 8 Test (AMI) NaN Test (AMI)
9 9 Data NaN Data
10 10 Ryflex (AMI) NaN Ryflex (AMI)
【问题讨论】:
-
一件事是您忘记再次使用
str进行第二次替换。你需要dcol.str.replace(" (AMI)", "").str.replace(" N/A", "Non")。不知道这是否是整个问题。 -
对不起,我忘了说,我刚刚编辑了我的帖子。我都试过了,但都没有工作。
-
您能否提供一个完整的精简示例,其中包含说明问题的示例数据?
-
@BrenBarn,编辑并添加了示例 csv、示例代码和示例输出。它表明唯一有效的是
N/A一个,但(AMI)不起作用。
标签: python python-2.7 replace pandas strip