Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用零为熊猫分组列表填写缺失的日期?_Python_Pandas_Time Series_Pandas Groupby - Fatal编程技术网

Python 如何用零为熊猫分组列表填写缺失的日期?

Python 如何用零为熊猫分组列表填写缺失的日期?,python,pandas,time-series,pandas-groupby,Python,Pandas,Time Series,Pandas Groupby,我希望每天记录0笔交易发生的天数内的交易和账目 以下是我的初始数据帧: df.head() tr_timestamp text location 2016-01-01 cookies TX 2016-01-01 pizza TX 2016-01-04 apples TX 2016-01-08 bread TX 当我按天运行组时,我得到以下信息: df_by_day = df['tr_timestamp'].groupby(df.tr

我希望每天记录0笔交易发生的天数内的交易和账目

以下是我的初始数据帧:

df.head()
tr_timestamp  text      location
2016-01-01    cookies   TX
2016-01-01    pizza     TX
2016-01-04    apples    TX
2016-01-08    bread     TX
当我按天运行组时,我得到以下信息:

df_by_day = df['tr_timestamp'].groupby(df.tr_timestamp).count()
df_by_day

tr_timestamp
2016-01-01  2
2016-01-04  1
2016-01-08  1
我希望使用Python/Pandas,在其中填充没有事务的日期,以便获得以下输出:

df_by_day_filled

tr_timestamp
2016-01-01  2
2016-01-02  0
2016-01-03  0
2016-01-04  1
2016-01-05  0
2016-01-06  0
2016-01-07  0
2016-01-08  1
我尝试了以下答案,但没有给出我需要返回的输出:

谢谢。

这是一项手术:

df.set_index(pd.to_datetime(df.pop('tr_timestamp'))).resample('D')['text'].count()

tr_timestamp
2016-01-01    2
2016-01-02    0
2016-01-03    0
2016-01-04    1
2016-01-05    0
2016-01-06    0
2016-01-07    0
2016-01-08    1
Freq: D, Name: text, dtype: int64
pd.to_datetime
调用确保在“tr_timestamp”不是日期时间的情况下,这种方法可以工作。如果是,则解决方案简化为

df.dtypes

tr_timestamp    datetime64[ns]
text                    object
location                object
dtype: object

df.set_index('tr_timestamp').resample('D')['text'].count()

tr_timestamp
2016-01-01    2
2016-01-02    0
2016-01-03    0
2016-01-04    1
2016-01-05    0
2016-01-06    0
2016-01-07    0
2016-01-08    1
Freq: D, Name: text, dtype: int64
您也可以尝试:

df_by_day.asfreq('D', fill_value=0)
输出:

tr_timestamp
2016-01-01    2
2016-01-02    0
2016-01-03    0
2016-01-04    1
2016-01-05    0
2016-01-06    0
2016-01-07    0
2016-01-08    1
Freq: D, Name: tr_timestamp, dtype: int64