使用 python pandas 求剩余天数的平均值
find average in remaining days using 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 天的每一天 cumulative_ordered 的百分比平均值时,我无法计算剩余天数(请参阅下面最后的代码输出)。
我有以下代码,它给了我来自 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.. 我怎样才能保留它以便它仍然给我整数?
NaN
和 inf
是除以 0.0
的结果。
您似乎试图仅将操作应用于 cumulative_ordered
列,因此您应该 运行 最后一个代码块:
m['cumulative_ordered'] = m['cumulative_ordered'] / m['cumulative_ordered'][m['cumulative_ordered'].index.days == 0]
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 天的每一天 cumulative_ordered 的百分比平均值时,我无法计算剩余天数(请参阅下面最后的代码输出)。
我有以下代码,它给了我来自 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.. 我怎样才能保留它以便它仍然给我整数?
NaN
和 inf
是除以 0.0
的结果。
您似乎试图仅将操作应用于 cumulative_ordered
列,因此您应该 运行 最后一个代码块:
m['cumulative_ordered'] = m['cumulative_ordered'] / m['cumulative_ordered'][m['cumulative_ordered'].index.days == 0]