使用 python pandas 查找剩余天数的平均值

df 是一个包含ship_date、order_date 和cumulative_ordered 的csv 文件。cumulative_ordered 是在ship_date 之前每天添加的订单总和。每个 ship_date 前有 30 天,而那些天数只计算一个 ship_date。在ship_date 2018-07-01之后,那么下一个ship_date将是2018-08-01,程序相同。


我的问题是,当我计算前 30 天中每一天的累积排序的百分比平均值时,我无法获得剩余天数(请参阅下面的最后一个代码输出)。


我有以下代码,它为我提供了 csv 文件中的 days_remaining,其中包含几个不同的 ship_date 和 order_date,分别倒计时到每个单独的 ship_date。


df['days_remaining'] = pd.to_datetime(df['ship_date']).sub\

(pd.to_datetime(df['order_date'])).dt.days

df['difference'] = df['ship_date'] - df['order_date']


df.head()

输出:


ship_date    Order_date   cumulative_ordered   days_remaining    difference


2018-07-01   2018-06-01     7                  30               30 days

2018-07-01   2018-06-02     10                 29               29 days

2018-07-01   2018-06-03     15                 28               28 days

2018-07-01   2018-06-04     30                 28               27 days

2018-07-01   2018-06-05     41                 28               26 days

然后我尝试查找ship_date之前每一天的总订购量


m = df.groupby("difference").mean()

m.head()

这给了我这个输出:


             cumulative ordered    days_remaining

difference                            

      0 days    352.458124             0.0

      1 days    291.234747             1.0

      2 days    244.122137             2.0

      3 days    201.178765             3.0

      4 days    190.153641             4.0

当我尝试通过运行以下代码,根据从上面 0 天的cumulative_ordered 输出填充的百分比来查找每天累积订购的平均值时遇到了一个问题:


   v = m/m[m.index.days == 0].iloc[0]

   v.head()


          cumulative_ordered      days_remaining

difference                           

0 days        1.000000              NaN

1 days        0.891324              inf

2 days        0.812534              inf

3 days        0.752339              inf

4 days        0.673745              inf

days_remaining 更改为 NaN 和 inf .. 我怎样才能保留它以便它仍然给我整数?


开满天机
浏览 181回答 1
1回答

狐的传说

的NaN和inf从通过划分导致0.0。似乎您试图仅将操作应用于cumulative_ordered列,因此您应该为最后一个代码块运行它:m['cumulative_ordered'] = m['cumulative_ordered'] / m['cumulative_ordered'][m['cumulative_ordered'].index.days == 0]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python