填写缺失数据

2024-04-18 22:17:10 发布

您现在位置:Python中文网/ 问答频道 /正文

如何填写这个日期框中缺少的数据。你知道吗

没有销售的天数缺少值。如何填写在特定商店和日期销售商品的0天的缺失值?你知道吗

输入

Dates            Store            Item        Sales           
2017-01-01       Chicago          Apple       10
2017-01-02       NewYork          Pear        10 
2017-01-03       Chicago          Apple       10

输出

Dates            Store            Item        Sales           
2017-01-01       Chicago          Apple       10
2017-01-01       Chicago          Pear        0
2017-01-02       Chicago          Apple       0
2017-01-02       Chicago          Pear        0
2017-01-03       Chicago          Apple       10
2017-01-03       Chicago          Pear        0    
2017-01-01       NewYork          Apple       0
2017-01-01       NewYork          Pear        0 
2017-01-02       NewYork          Apple       0 
2017-01-02       NewYork          Pear        10 
2017-01-03       NewYork          Apple       0 
2017-01-03       NewYork          Pear        0 

Tags: 数据storeappleitem商品商店datespear
2条回答

使用set_indexstackunstack会有点难以理解

df.set_index(['Dates','Store','Item']).unstack().stack(dropna=False).\
    unstack(1).stack(dropna=False).fillna(0).reset_index()
Out[258]: 
         Dates   Item    Store  Sales
0   2017-01-01  Apple  Chicago   10.0
1   2017-01-01  Apple  NewYork    0.0
2   2017-01-01   Pear  Chicago    0.0
3   2017-01-01   Pear  NewYork    0.0
4   2017-01-02  Apple  Chicago    0.0
5   2017-01-02  Apple  NewYork    0.0
6   2017-01-02   Pear  Chicago    0.0
7   2017-01-02   Pear  NewYork   10.0
8   2017-01-03  Apple  Chicago   10.0
9   2017-01-03  Apple  NewYork    0.0
10  2017-01-03   Pear  Chicago    0.0
11  2017-01-03   Pear  NewYork    0.0

用途:

  • 第一个^{}用于Multiindex
  • 创建新的Multiindex^{}
  • ^{}并为缺少的值添加0
  • 最后排序级别Store^{}^{}

df = df.set_index(['Dates','Store','Item'])
mux = pd.MultiIndex.from_product(df.index.levels, names=df.index.names)
df = df.reindex(mux, fill_value=0).sort_index(level='Store').reset_index()
print (df)
        Dates    Store   Item  Sales
0  2017-01-01  Chicago  Apple     10
1  2017-01-01  Chicago   Pear      0
2  2017-01-02  Chicago  Apple      0
3  2017-01-02  Chicago   Pear      0
4  2017-01-03  Chicago  Apple     10
5  2017-01-03  Chicago   Pear      0
6  2017-01-01  NewYork  Apple      0
7  2017-01-01  NewYork   Pear      0
8  2017-01-02  NewYork  Apple      0
9  2017-01-02  NewYork   Pear     10
10 2017-01-03  NewYork  Apple      0
11 2017-01-03  NewYork   Pear      0

相关问题 更多 >