pandas 如何在python中导入csv文件时动态拆分列

hmtdttj4  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(117)

我有一个csv文件,其中有一列整数值,还有很多空行。这些是不同学生在不同科目中获得的分数,但问题是并非每个学生都参加了所有的考试,因此,每行之间的行数是不同的。数据如下所示:

63
67
86
90

45
69
90

78
85
40
93
53
55
67

38
92
75
94
73

.
.
.

当我尝试使用下面的脚本导入此文件时,它只会忽略空行,输出 Dataframe 如下所示:

df=pd.read_csv('input_data.txt',header=None)

63
67
86
90
45
69
90
78
85
40
93
53
55
67
.
.
.
2vuwiymt

2vuwiymt1#

每天学习新的东西。从来不知道Pandas跳过默认的空白行。

In [4]: pd.read_csv('input_data.txt', header=None, skip_blank_lines=False)
Out[4]:
       0
0   63.0
1   67.0
2   86.0
3   90.0
4    NaN
5   45.0
6   69.0
7   90.0
8    NaN
9   78.0
10  85.0
11  40.0
12  93.0
13  53.0
14  55.0
15  67.0
16   NaN
17  38.0
18  92.0
19  75.0
20  94.0
21  73.0

关于“将NaN拆分到不同的列”。我不是100%确定你的意思。尽管如此,这里有一些有用的片段...

# load data
df = pd.read_csv('empty_rows.txt',
                 names=['score'], 
                 skip_blank_lines=False)

# Add an indicator column
df['has_score'] = ~df['score'].isna()

# Split the dataframe into two
gb_isna = df.groupby(~df['score'].isna())
df_has_score = gb_isna.get_group(True)
df_no_score = gb_isna.get_group(False)

# Or use indicator
gb_has_score = df.groupby('has_score')

相关问题