我想使用python pandas读取一个空格分隔文件。此文件的第一列包含一些空格,因此我无法成功读取此文件。
输入文件数据
Jan1 Jan2 Jan3 Jan4 Jan5 total
A BC 1 2 4 4 5 16
PQ R 1 2 3 4 5 15
X Y Z 2 2 2 2 2 10
我试图使用以下代码阅读它 -
df = pd.read_csv("text2.txt", sep = r"\s+",engine='python')
df.to_csv("out.csv",index=None)
我也尝试过使用 -
delim_whitespace =真
我想从这个文件生成csv文件,如下所示 -
names,Jan1,Jan2,Jan3,Jan4,Jan5,total
A BC,1,2,4,4,5,16
PQ R,1,2,3,4,5,15
X Y Z,2,2,2,2,2,10
我是否错过了一些p
答案 0 :(得分:1)
您必须半手动解析
def read_funny_csv(filehandle):
columns = None
index = list()
data = list()
split_pattern = re.compile('\s+')
num_columns = None
for line in filehandle:
parts = split_pattern.split(line.strip())
if num_columns is None:
num_columns = len(parts)
columns = parts
continue
index.append(' '.join(parts[:-num_columns]))
data.append(parts[-num_columns:])
return columns, index, data
with open("text2.txt", 'r') as filehandle:
columns, index, data = read_funny_csv(filehandle)
df = pd.DataFrame(index=index, data=data, columns=columns)
您必须自己指定dtypes
。
如果你想让pandas自己做一个刺,你可以将它导出到一个体面划分的csv,并重新加载它