我正在使用pandas打开一个txt文件,并且文件中应该有一个列中断,而是\t
。
我正在读这样的文件:
df=pd.read_csv(r'file.txt')
数据框如下所示:
1 Band 1\t 0.428944\t0.843916\t0.689923\t0
2 Band 2\t-0.000000\t0.689320\t0.513170\t0
3 Band 3\t 0.336438\t0.743478\t0.592622\t0
4 Band 4\t 0.313259\t0.678561\t0.525667\t0
5 Band 5\t 0.374522\t0.746828\t0.583513\t0
我希望它看起来像这样:
1 Band 1 0.428944 0.843916 0.689923
2 Band 2 -0.000000 0.689320 0.513170
3 Band 3 0.336438 0.743478 0.592622
4 Band 4 0.313259 0.678561 0.525667
5 Band 5 0.374522 0.746828 0.583513
我是新手在python中使用txt文件,我是否可能需要设置某种分隔符?
使用print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.txt').read(42)))
返回:
'\n\n Band 1\t 0.428944\t0.843916\t0.689923\t
编辑:
我发布的原始数据帧已经过简化,实际上有更多的数据列。
`print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.csv').read(500)))
返回:
'\nBasic Stats\t Min\t Max\t Mean\t Stdev\t Num\tEigenvalue\n Band 1\t 0.428944\t0.843916\t0.689923\t0.052534\t 1\t 0.229509\n Band 2\t-0.000000\t0.689320\t0.513170\t0.048885\t 2\t 0.119217\n Band 3\t 0.336438\t0.743478\t0.592622\t0.052544\t 3\t 0.059111\n Band 4\t 0.313259\t0.678561\t0.525667\t0.048047\t 4\t 0.051338\n Band 5\t 0.374522\t0.746828\t0.583513\t0.055989\t 5\t 0.027913\n Band 6\t-0.000000\t0.749325\t0.330068\t0.314351\t 6\t 0.022561\n Band 7\t-0.000000\t0.819288\t0.6001'
答案 0 :(得分:8)
这是标签字符。这意味着您的pandas.read_csv()
调用无法自动确定文件中的正确分隔符。
您可以尝试使用sep
参数明确指定它:
df = pd.read_csv(r'file.txt', sep='\t')
或者您可以将delim_whitespace
参数设置为true,以获得一般的空白分隔符支持:
df = pd.read_csv(r'file.txt', delim_whitespace=True)
从您的示例中看起来您有额外的空行以及分隔符后的空格,因此您可能需要让读者跳过这些:
df = pd.read_csv(r'file.txt', sep='\t',
skipinitialspace=True, skip_blank_lines=True)
答案 1 :(得分:2)
\
是一个转义字符。它改变了下一个字符的表示。在\t
的情况下,它变为制表空间。 https://en.wikipedia.org/wiki/Escape_character
答案 2 :(得分:1)
\t
是<tab>
字符的转义序列。