删除 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.replace
或 str.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) 中数据中的双引号?
如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?