我有一个数据框,它看起来像:
name date value
0 a 2020-01-01 1
1 a 2020-01-03 1
2 a 2020-01-05 1
3 b 2020-01-02 1
4 b 2020-01-03 1
5 b 2020-01-04 1
6 b 2020-01-05 1
其中值由
value_df = df.groupby(['name', 'date'], as_index=False).value.sum()
计算得出我怎样才能做到以下几点:
name date value
0 a 2020-01-01 1
1 a 2020-01-02 1
2 a 2020-01-03 1
3 a 2020-01-04 1
4 a 2020-01-05 1
5 b 2020-01-01 1
6 b 2020-01-02 1
7 b 2020-01-03 1
8 b 2020-01-04 1
9 b 2020-01-05 1
我试过
date_index = pd.date_range(start=min(df['date']), end=max(df['date']))
value_df['value'] = pd.Series(value_df['value'])
value_df.reindex(date_index)
这没有任何区别。
最佳答案
尝试旋转然后堆叠:
date_index = pd.date_range(start=df['date'].min(), end=df['date'].max())
(df.pivot_table('value','name','date',fill_value=1)
.reindex(date_index,axis=1).reset_index().melt('name',var_name='date'))
或者:
(df.pivot_table('value','name','date',fill_value=1)
.reindex(date_index,axis=1).stack().reset_index(name='value'))
name date value
0 a 2020-01-01 1
1 a 2020-01-02 1
2 a 2020-01-03 1
3 a 2020-01-04 1
4 a 2020-01-05 1
5 b 2020-01-01 1
6 b 2020-01-02 1
7 b 2020-01-03 1
8 b 2020-01-04 1
9 b 2020-01-05 1
关于python - 如何将连续行填充到 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62346114/