Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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_Python 3.x_Pandas_Pandas Resample - Fatal编程技术网

Python 多索引的重采样

Python 多索引的重采样,python,python-3.x,pandas,pandas-resample,Python,Python 3.x,Pandas,Pandas Resample,我想按类型对数据集进行每日细分。没有每种类型每天的记录,如果没有,我想NaN 我可以得到一个“每日重新采样”的结果,但类型是ommitted 下面的代码应该是一个完整的工作示例(好吧,除了最后的已知错误之外工作!): 我要查找的输出是每天的一行/键入组合: 日期 类型 价值 20210101 A. 1. 20210102 A. 楠 20210103 A. 2. 20210101 B 楠 20210102 B 3. 20210103 B 楠 如果可能需要按组重新采样,请使用“按天重新采样”,然后将

我想按类型对数据集进行每日细分。没有每种类型每天的记录,如果没有,我想NaN

我可以得到一个“每日重新采样”的结果,但类型是ommitted

下面的代码应该是一个完整的工作示例(好吧,除了最后的已知错误之外工作!):

我要查找的输出是每天的一行/键入组合:

日期 类型 价值 20210101 A. 1. 20210102 A. 楠 20210103 A. 2. 20210101 B 楠 20210102 B 3. 20210103 B 楠
如果可能需要按组重新采样,请使用“按天重新采样”,然后将“添加缺少的值”用于:

如果只需要为每个组追加缺少的日期时间:


好极了使用第一个示例,为了“展平”它,我只需在末尾添加.reset_index()。正确吗?@GinjaNinja-我找到了更好的解决方案,所以删除了第一个旧的。@GinjaNinja-如果想使用
df.set\u index('Date',inplace=True)
pd.Grouper中的
remove
key='Date'
,我删除了我的评论,说有一个异常,因为我意识到我需要删除set\u index。谢谢你明确的帮助
import pandas as pd
import datetime as dt

df = pd.DataFrame({
    'Date': [dt.datetime(2021,1,1), dt.datetime(2021, 1, 3), dt.datetime(2020,1,2)],
    'Type': ['A', 'A', 'B'],
    'Value': [1,2,3]
})

df.set_index('Date', inplace=True)
#   this loses the 'type'
print(df.resample('1D').mean())

df = df.reset_index().set_index(['Date', 'Type'])

#   this raises an exception "TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'"
print(df.resample('1D').mean())
df = (df.groupby(['Type', pd.Grouper(freq='1D', key='Date')])['Value']
        .mean()
        .unstack()
        .stack(dropna=False)
        .reset_index(name='Value')
      
      )
print (df)  
  Type       Date  Value
0    A 2021-01-01    1.0
1    A 2021-01-02    NaN
2    A 2021-01-03    2.0
3    B 2021-01-01    NaN
4    B 2021-01-02    3.0
5    B 2021-01-03    NaN
mux = pd.MultiIndex.from_product([df['Type'].unique(),
                                  pd.date_range(df['Date'].min(), df['Date'].max())], 
                                  names=['Date','Type'])
df = df.set_index(['Type','Date']).reindex(mux).reset_index()
print (df)                
  Date       Type  Value
0    A 2021-01-01    1.0
1    A 2021-01-02    NaN
2    A 2021-01-03    2.0
3    B 2021-01-01    NaN
4    B 2021-01-02    3.0
5    B 2021-01-03    NaN