python - 填写列
问题描述
我有以下数据:
1)
1 1
1 3
1 5
2 1
2 2
我需要做的是像这样填写缺失的行:
1 1
1 2
1 3
1 4
1 5
2 1
2 2
之后我需要填充一个新列,以便新行为零,旧行为 1,如下所示:
1 1 1
1 2 0
1 3 1
1 4 0
1 5 1
2 1 1
2 2 1
之后我必须将最后一列转换成这样的一行:
1,0,1,0,1,1,1
我被困在第一步,不知道如何检查和填写条目,所以我不能真正给你一个我的工作例子......谢谢你的帮助!
解决方案
你可以试试这个:
import pandas as pd
import numpy as np
df=pd.DataFrame({"x": [1,1,1,2,2], "y": [1,3,5,1,2]})
df["rep"]=np.where(df["y"].lt(df["y"].shift(-1)),df["y"].shift(-1).sub(df["y"]).sub(1), 0)
df=df.loc[df.index.repeat(df["rep"].add(1))]
df["y"]=df["y"].add(df.groupby(level=0)["y"].cumcount())
df["rep"]=df.groupby(level=0)["y"].cumcount().lt(1).astype(int)
df=df.reset_index(drop=True)
以及您正在寻找的输出:
>>> print(df["rep"].T.tolist())
[1, 0, 1, 0, 1, 1, 1]
>>> print(df)
x y rep
0 1 1 1
1 1 2 0
2 1 3 1
3 1 4 0
4 1 5 1
5 2 1 1
6 2 2 1
推荐阅读
- php - 致命错误:未捕获的 SoapFault 异常:php 中的 [WSDL]
- crystal-reports - 如何在水晶报表中对公式字段求和?
- python - python读取特定文本并转储到csv
- firebase - 如何在 FlatList(React Native)中从 Firebase 实时检索数据?
- scala - 如何遍历 Spark 中的模式?
- java - 带会话的无头 Chrome PDF 打印
- windows - 是否有适用于 Windows 的 OpenSSL?
- python - 如何减少大型数据集的文件大小
- apache - 为什么我在 Magento 1.9 上使用带参数的 url 重写时总是出现 404 错误
- javascript - 使用异步函数等待来自 onclick 的用户输入