如果文件中的值以分隔符结尾,则使用read_csv读入的列未正确分配。例如,
import pandas as pd
# File content
columns = ['A','B']
data = [[1,2], [3,4]]
# Generate very simple test file
with open('test.dat', 'w') as fh:
fh.writelines('{0}\t{1}'.format(*columns))
for line in data:
fh.write('\n')
for val in line:
# This is the crux: there is a tab-delimiter after each value,
# even the last one!
fh.write('{0}\t'.format(val))
# Try to read it
df = pd.read_csv('test.dat', sep='\t', index_col=None)
print(df)
产生
A B
1 2 NaN
3 4 NaN
这是一个错误还是一个功能?
在这种特定情况下,可以使用
解决问题df = pd.read_csv('test.dat', sep='\t', index_col=None, usecols=['A','B'])
正确生成
A B
0 1 2
1 3 4
但是,对于具有未知,大量列的文件,此修复程序不方便。是否有任何选项" pd.read_csv"那可以解决这个问题吗?
答案 0 :(得分:1)
有趣的是,将*量词添加到sep参数似乎有效:
df = pd.read_csv('test.dat', sep='\t*', index_col=None)