python - 如何将连续行填充到熊猫数据框?
问题描述
我有一个看起来像这样的数据框:
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
推荐阅读
- flutter - 如何测试取决于来自提供者的数据的颤振小部件
- sockets - 向 Google Web App 上的所有客户端发送数据
- arrays - 解码 JSON 文件时收到 DecodingError.dataCorrupted 错误
- python - 如何从 sqlalchemy 中的 session/engine/meta 获取表名及其数据类型?
- c# - App_Code“添加类”灰显
- jquery - 替换 URL 中的 User_ID
- javascript - 具有输入属性“必需”和“模式”的表单不起作用
- reactjs - SignalR 和 React - 由于底层连接被关闭而取消调用
- javascript - 在不同的项目 NPM 命令中克隆 Git 后出错
- postgresql - 本地版本的 postgres 外部数据包装器会自动更新吗?