Pandas处理以分隔符结尾的文本文件

k4emjkb1  于 2022-12-28  发布在  其他
关注(0)|答案(2)|浏览(123)

我有一个带有分隔符""的文本文件; ".

"Age ";"AgeRange "
0;"000019";
1;"000019";
2;"000019";
3;"000019";
4;"000019";
5;"000019";
6;"000019";
7;"000019";
8;"000019";
9;"000019";
10;"000019";
11;"000019";
12;"000019";
13;"000019";
14;"000019";
15;"000019";
16;"000019";
17;"000019";
18;"000019";
19;"000019";
20;"020024";

使用带有sep =""的pd. DataFrame时; "我正在获取列索引(['年龄','年龄范围'],数据类型='对象')。

with open(f, "rb") as f:
        file_io_obj = BytesIO(f.read())

    if config['file_type'] == 'txt':
        fil:pd.DataFrame = pd.read_csv(file_io_obj, header=dataHeader, skipfooter=dataSkipFooter, dtype=str, sep=config['file_separator'])

但是在我的 Dataframe 中,我的行现在也有一个NaN值。

Age  AgeRange 
0  000019             NaN
1  000019             NaN
2  000019             NaN
3  000019             NaN
4  000019             NaN

我需要以下数据框:

Age  AgeRange
0    000019
1    000019
2    000019
3    000019
4    000019

同一脚本将使用相同的设置处理多个文件:

"Inst ";"Year ";"WageType ";"Budget/consumption ";"consumption.type ";"consumption.type "
"DY";"2017";"_L_";"F";"90";"DY201790";
"DY";"2017";"000";"B";"01";"DY201701";
"DY";"2017";"000";"F";"01";"DY201701";
"DY";"2017";"005";"B";"01";"DY201701";
"DY";"2017";"005";"F";"01";"DY201701";
"DY";"2017";"006";"B";"01";"DY201701";
"DY";"2017";"006";"F";"01";"DY201701";
"DY";"2017";"008";"B";"01";"DY201701";
"DY";"2017";"008";"F";"01";"DY201701";

有人能帮忙吗?先谢了。

l3zydbqr

l3zydbqr1#

请执行以下操作:

import pandas as pd
data = pd.read_csv('age.txt', sep=';', dtype='str', usecols=[0,1])

data = pd.read_csv('age.txt', sep=';', dtype='str', usecols=[0,1]).reset_index(drop=True)

其返回

Age  AgeRange 
0     0    000019
1     1    000019
2     2    000019
3     3    000019
4     4    000019
5     5    000019
6     6    000019
7     7    000019
8     8    000019
9     9    000019
10   10    000019
11   11    000019
12   12    000019
13   13    000019
14   14    000019
15   15    000019
16   16    000019
17   17    000019
18   18    000019
19   19    000019
20   20    020024
kr98yfug

kr98yfug2#

这就是你想要的吗?

import pandas as pd
data = pd.read_csv('yourfile.txt', sep=';', dtype='str', usecols=[1])

然后,如果需要,重命名索引:

data.index.set_names(['Age'], inplace=True)

和/或重置它:

data.reset_index(inplace=True)

输出:

Age AgeRange
0   0   000019
1   1   000019
2   2   000019
3   3   000019
4   4   000019

根据您更新后的问题,如果您有多个文件,下面是如何执行此操作:

usecols=[i for i in range(min, max)]

usecols=[*range(min, max)])

相关问题