python - 扩展 pandas 数据框中的行

标签 python python-3.x pandas expand reindex

我有以下数据:

product Sales_band  Hour_id sales
prod_1  HIGH           1    200
prod_1  HIGH           3    100
prod_1  HIGH           4    300
prod_1  VERY HIGH      2    100
prod_1  VERY HIGH      5    253
prod_1  VERY HIGH      6    234

想要根据 hour_id 值添加行。 hour_id 变量的值可以是1 到10。因此,上面相同的数据将在缺少小时 ID 的地方进行扩展。虚拟输出为:(缺少小时 ID 时销售额 = 0)

product Sales_band  Hour_id sales
prod_1  HIGH           1    200
prod_1  HIGH           2    0
prod_1  HIGH           3    100
prod_1  HIGH           4    300
prod_1  HIGH           5    0
prod_1  HIGH           6    0
prod_1  HIGH           7    0
prod_1  HIGH           8    0
prod_1  HIGH           9    0
prod_1  HIGH           10   0
prod_1  VERY HIGH      1    0
prod_1  VERY HIGH      2    100
prod_1  VERY HIGH      3    0
prod_1  VERY HIGH      4    0
prod_1  VERY HIGH      5    253
prod_1  VERY HIGH      6    234
prod_1  VERY HIGH      7    0
prod_1  VERY HIGH      8    0
prod_1  VERY HIGH      9    0
prod_1  VERY HIGH      10   0

如何使用 python dataframe 来实现这一点。

最佳答案

使用groupbyreindex :

print (df.groupby(['product','Sales_band'])['Hour_id','sales']
         .apply(lambda x: x.set_index('Hour_id').reindex(range(1, 11), fill_value=0))
         .reset_index())

   product Sales_band  Hour_id  sales
0   prod_1       HIGH        1    200
1   prod_1       HIGH        2      0
2   prod_1       HIGH        3    100
3   prod_1       HIGH        4    300
4   prod_1       HIGH        5      0
5   prod_1       HIGH        6      0
6   prod_1       HIGH        7      0
7   prod_1       HIGH        8      0
8   prod_1       HIGH        9      0
9   prod_1       HIGH       10      0
10  prod_1  VERY HIGH        1      0
11  prod_1  VERY HIGH        2    100
12  prod_1  VERY HIGH        3      0
13  prod_1  VERY HIGH        4      0
14  prod_1  VERY HIGH        5    253
15  prod_1  VERY HIGH        6    234
16  prod_1  VERY HIGH        7      0
17  prod_1  VERY HIGH        8      0
18  prod_1  VERY HIGH        9      0
19  prod_1  VERY HIGH       10      0

关于python - 扩展 pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39751866/

相关文章:

python - 缺少 PyDev 代码分析

python - 在火车测试拆分操作(scikit)后使数据平衡?

python - 按日期字符串索引时间序列

python - 日期时间函数之间的 Pandas 时间序列?

python - django 模板帮助,颠倒

python - pandas.to_csv 输出一列 float 而不是整数

python - python在Mathematica中有类似 "Chop"的功能吗?

python - 尝试使用 Python 3.7.2 和 IMAPClient 批量删除电子邮件 - imaplib.IMAP4.error : UID command error: BAD [b'Command line too large']

python - 更新 UI PyQt5 中的时钟和文本

python - 数据框对象没有属性