使用Pandas读取带分隔符的文件

2024-09-30 16:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文件中有一个数据,我不知道它是用空格还是制表符分隔的

数据输入:

id              Name                                                                                year    Age Score 

123456          ALEX BROWNNIS VND                                                                        0      19     115
123457          MARIA BROWNNIS VND                                                                       0      57     170
123458          jORDAN BROWNNIS VND                                                                      0      27     191

我用read_csv读取数据,并使用制表符分隔

df = pd.read_csv(data.txt,sep='\t')

out:

     id           Name                                                                                year  Age  Score 
0          123456  ALEX BROWNNIS VND                             ...                                     0   19     115
1          123457  MARIA BROWNNIS VND                            ...                                     0   57     170
2          123458  jORDAN BROWNNIS VND                           ...                                     0   27     191

这列之间有很多空格我是否正确使用分隔符?当我尝试处理列名时,我得到了key error,因此我基本上认为错误在于使用了\t
解决这个问题的可能方法是什么


Tags: csv数据nameidreadageyearvnd
3条回答

由于有两列,第二列的字数可变,因此需要将其作为常规文件读取,然后将第二列与最后一列合并

id = [] 
Name = [] 
year = []
Age = []
Score = []
with open('data.txt') as f: 
    text = f.read() 
lines = text.split('\n') 
for line in lines: 
    if len(line) < 3: continue 
    words = line.split() 
    id.append(words[0]) 
    Name.append(' '.join(words[1:-3])) 
    year.append(words[-3])
    Age.append(words[-2])
    Score.append(words[-1])
df = pd.DataFrame.from_dict({'id': id, 'Name': Name,
              'year': year, 'Age': Age, 'Score': Score})

编辑:您已经发布了总体数据,因此我将更改我的答案以适应它

问题已解决:

df = pd.read_csv('data.txt', sep='\t',engine="python")

我添加了这行代码,以删除列之间的空格及其工作

df.columns = df.columns.str.strip()

您可以像下面的示例一样使用skipinitialspace参数

df2 = pd.read_csv('data.txt', sep='\t', delimiter=',', encoding="utf-8", skipinitialspace=True)

熊猫文件:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

相关问题 更多 >