删除 Pandas 中的双引号

Posted

技术标签:

【中文标题】删除 Pandas 中的双引号【英文标题】:Remove double quotes in Pandas 【发布时间】:2017-11-20 19:10:24 【问题描述】:

我有以下文件:

"j"; "x"; y
"0"; "1"; 5
"1"; "2"; 6
"2"; "3"; 7
"3"; "4"; 8
"4"; "5"; 3
"5"; "5"; 4

我读到的:

df = pd.read_csv('test.csv', delimiter='; ', engine='python')

然后我打印print df 并查看:

   "j"  "x"  y
0  "0"  "1"  5
1  "1"  "2"  6
2  "2"  "3"  7
3  "3"  "4"  8
4  "4"  "5"  3
5  "5"  "5"  4

相反,我想看看:

   j  x  y
0  0  1  5
1  1  2  6
2  2  3  7
3  3  4  8
4  4  5  3
5  5  5  4

如何去掉双引号?

【问题讨论】:

【参考方案1】:

您可以将类型作为参数传递给read_csv 函数。

pd.read_csv('test.csv', delimiter='; ', engine='python', dtype=np.float32)

您可以在read_csv阅读更多内容

另外,你可以使用to_numeric函数。

df = df.apply(pd.to_numeric)

【讨论】:

convert_objects 已弃用 @TedPetrou ,谢谢,我已将其更新为使用 to_numeric 方法 你为什么要在这里使用apply 而不是仅仅使用函数本身。 pd.to_numeric(df, errors='ignore')。另外,to_numeric 是一个函数而不是一个方法。 我收到了ValueError: The 'dtype' option is not supported with the 'python' engine。和ValueError: ('Unable to parse string', u'occurred at index "j"'),用于替代方法。 @KcFnMi ,你是对的......在这种情况下,你可以使用转换器参数。您可以在here 和documentation 获得帮助【参考方案2】:

我做到了:

rm_quote = lambda x: x.replace('"', '')

df = pd.read_csv('test.csv', delimiter='; ', engine='python', 
     converters='\"j\"': rm_quote, 
                 '\"x\"': rm_quote)

df = df.rename(columns=rm_quote)

【讨论】:

【参考方案3】:

有多种方法可以做到这一点,例如使用:str.replacestr.strip

考虑到要更新以下DataFrame的列

假设您要删除第一列中的双引号。

str.replace 可以做到

df[0] = df[0].str.replace(r"[\"]", '')

或者

df[0] = df[0].str.replace('"', "")

如果引号出现在元素上,最后一个也将删除它们。例如,如果一个有"236"76",它将变成23676

使用str.strip,可以删除字符串末尾的引号

df[0] = df[0].str.strip('"')

这是最终结果

【讨论】:

如果我有 " 在文本之间,即在第 1 列中,假设我有 "236"76" @pythondumb 检查以下是否解决了你的问题df[0] = df[0].str.replace('"', "") 不,这不会。相反,我发现这个df[0] = df[0].str.strip().str[1:-1] 很有用。

以上是关于删除 Pandas 中的双引号的主要内容,如果未能解决你的问题,请参考以下文章

删除 Presto SQL 兼容数据库 (AWS Athena) 中数据中的双引号?

从json响应swift中删除数组中的双引号

如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?

如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?

如何有条件地删除 R 中 write.csv 中的双引号

如何在php中删除从json “x”:“y”到x:y的双引号[关闭]