【问题标题】:How can I fill in a missing values in range with Pandas?如何使用 Pandas 填写范围内的缺失值?
【发布时间】:2016-02-09 16:41:00
【问题描述】:

我有一个数据集,其中包含多个值,如下所示。

>>> a.head()
   value  freq
3      9     1
2     11     1
0     12     4
1     15     2

我需要在值列中填写整数之间的值。例如,我需要在 9 和 11 之间插入一个用零填充的新行,然后在 12-15 之间插入另外两个。最终结果应该是包含 9-15 的数据集,其中“缺失”行全为零。

是否有在特定位置插入新行而不替换数据的方法?我发现的唯一方法是在某个位置对数据帧进行切片,然后附加一个新行并连接其余行。

更新:索引完全不相关,所以不用担心。

【问题讨论】:

  • 您的 Series 对象是否太大以至于无法手动添加值?
  • 可能我现在的样本集很小,但实际数据集大约有 300-400 条记录,没有 16 列,所以理想情况下我需要找到一些方法来填补缺失值。
  • @bleh 这是我最初的想法,但我想知道 Pandas 是否有办法填充两者之间的值。
  • 我现在看到了——删除上面的评论,因为它没有帮助。

标签: python pandas


【解决方案1】:

你没有说你的索引会发生什么,所以我假设它不重要。

In [12]: df.index = df['value']

In [15]: df.reindex(np.arange(df.value.min(), df.value.max() + 1)).fillna(0)
Out[15]:
       value  freq
value
9          9     1
10         0     0
11        11     1
12        12     4
13         0     0
14         0     0
15        15     2

【讨论】:

  • 是的,索引完全不重要。这看起来很理想,可以试一试。
  • 谢谢,这太完美了!
  • 我还发现您可以删除 .fillna(0) 部分并使用 df.reindex(np.arange(df.value.min(), df.value.max() + 1), fill_value=0) 似乎可以完成同样的事情。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2021-07-17
相关资源
最近更新 更多