s = '#one two three\n1 2 3'
import pandas as pd
from io import StringIO
pd.read_csv(StringIO(s), delim_whitespace=True)
#one two three
0 1 2 3
如果我设置参数comment =’#’,那么pandas会完全忽略该行.
有没有一种简单的方法来处理这种情况?
第二个问题,相关的是,在这种情况下如何处理引用,它没有#:
s = '"one one" two three\n1 2 3'
print(pd.read_csv(StringIO(s), delim_whitespace=True))
one one two three
0 1 2 3
它没有#:
s = '#"one one" two three\n1 2 3'
print(pd.read_csv(StringIO(s), delim_whitespace=True))
#"one one" two three
0 1 2 3 NaN
谢谢!
更新
这是第二个例子的测试.
s = '#"one one" two three\n1 2 3'
# here I am cheating slicing the string
wanted_result = pd.read_csv(StringIO(s[1:]), delim_whitespace=True)
# is there a way to achieve the same result configuring somehow read_csv?
assert wanted_result.equals(pd.read_csv(StringIO(s), delim_whitespace=True))
解决方法:
您可以通过以下方式重命名read_csv()输出的第一个标头:
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO(s), delim_whitespace=True)
new_name = df.columns[0].split("#")[0]
df.rename(columns={df.columns[0]:new_name})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。