python - 如何以特殊形式添加一行
问题描述
我有一个pandas.DataFrame
表格
index df df1
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 2 111
6 3 111
7 0 111
8 2 111
9 3 111
10 0 111
11 1 111
12 2 111
13 3 111
14 0 111
15 1 111
16 2 111
17 3 111
18 1 111
19 2 111
20 3 111
我想创建一个数据框,其中df列重复 0、1、2、3。但是数据中缺少一些东西。我试图通过附加行值来用 0 填充空白。这是我的预期结果:
index df df1
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 1 0
6 2 111
7 3 111
8 0 111
9 1 0
10 2 111
11 3 111
12 0 111
13 1 111
14 2 111
15 3 111
16 0 111
17 1 111
18 2 111
19 3 111
20 0 0
21 1 111
22 2 111
23 3 111
我怎样才能做到这一点?
编辑:
如果我的输入如下,我该怎么办?
index df1 df2
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 3 111
6 1 111
7 2 111
这是我的预期结果:
index df1 df2
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 1 0
6 2 0
7 3 111
8 0 0
9 1 111
10 2 111
11 3 0
解决方案
您可以设置自定义分组以检测“df”中增加的数字何时重置为较低(或相等)的值。
然后使用“df”中的唯一值和唯一组的乘积重新索引。
最后,使用fillna
/ reset_index
/的组合重新处理输出rename_axis
:
# uncomment below if "index" is not the index
# df = df.set_index('index')
# find positions where "df" resets and make groups
groups = df['df'].diff().le(0).cumsum()
(df.set_index([groups, 'df'], drop=True) # set custom groups and "df" as index
.reindex(pd.MultiIndex.from_product([groups.unique(), # reindex with all
range(4), # combinations
], names=['group', 'df']))
.fillna(0, downcast='infer') # set missing values as zero
.reset_index('df') # all below to restore a range index
.reset_index(drop=True)
.rename_axis('index')
)
输出:
df df1
index
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 1 0
6 2 111
7 3 111
8 0 111
9 1 0
10 2 111
11 3 111
12 0 111
13 1 111
14 2 111
15 3 111
16 0 111
17 1 111
18 2 111
19 3 111
20 0 0
21 1 111
22 2 111
23 3 111
第二个例子的输出:
df1 df2
index
0 0 111
1 1 111
2 2 111
3 3 111
4 0 111
5 1 0
6 2 0
7 3 111
8 0 0
9 1 111
10 2 111
11 3 0
推荐阅读
- r - 为什么在绘制从响应()函数返回的数据(ggplot2)时,R Shiny 会抛出此错误?
- plugins - 使用预操作插件更新 MSCRM 中的“修改者”字段 -- 需要帮助修复代码
- python - 如何解决导入和重新加载的问题
- scala - ZIO:如何只计算一次?
- mysql - 在这种情况下使用和/或逻辑的最佳实践?
- odoo - 如何在 oDoo 中检查数据库 URL
- javascript - 将 axios 解析为变量,而不是在回调中做所有事情
- c# - 从图像列表生成连接图像
- go - 我怎么知道,Hyperledger Fabric 中的交易是由哪个 Peer 完成的?
- sql - 调整月份特定 SQL 查询以遍历所有大于基准月份的月份