将带有分组数据的CSV导入到Pandas数据框中

时间:2018-08-09 09:53:14

标签: python python-3.x pandas dataframe

当我使用Pandas导入数据文件时,得到以下数据框:

    product feature_1   feature_2
0   a   11  12
1   NaN 13  14
2   NaN 15  16
3   NaN 17  18
4   NaN 19  20
5   b   21  22
6   NaN 23  24
7   NaN 25  26
8   c   27  28
9   NaN 29  30
10  NaN 31  32

我需要做的是将NaN替换为它们上方的下一个非NaN元素,以便获得以下数据框:

    product feature_1   feature_2
0   a   11  12
1   a   13  14
2   a   15  16
3   a   17  18
4   a   19  20
5   b   21  22
6   b   23  24
7   b   25  26
8   c   27  28
9   c   29  30
10  c   31  32

我做了什么(有关代码和数据文件,请参见gist

  • 将我的数据导入字典列表
  • 遍历列表并进行修改
  • 将列表导入数据框

如何在不预先进行列表预处理的情况下直接在熊猫中实现此目的?

1 个答案:

答案 0 :(得分:2)

您可以使用pd.Series.ffill来避免字典转换和手动迭代:

df['product'].ffill(inplace=True)

print(df)

   product  feature_1  feature_2
0        a         11         12
1        a         13         14
2        a         15         16
3        a         17         18
4        a         19         20
5        b         21         22
6        b         23         24
7        b         25         26
8        c         27         28
9        c         29         30
10       c         31         32