python - 使用熊猫有条件地移动列中的数据
问题描述
说我有这样的df
index shift value
0 1 A
1 0 nan
2 0 A
3 1 A
4 0 nan
5 0 nan
6 0 A
7 0 nan
在代码之后,理想的输出是这样的:只有值有一个 1 on shift 向下移动一行
index shift value
0 1 nan
1 0 A
2 0 A
3 1 nan
4 0 A
5 0 nan
6 0 A
7 0 nan
shift 列中的 1 只会发生在 value 列上有 nonna 值的情况下。我正在考虑使用 shift(),但它会将整个列值向下移动,这不是我想要的。
解决方案
尝试这个:
df['value'] = df.loc[np.arange(len(df)) - df['shift'].shift().fillna(0),'value'].to_numpy()
df['value'] = df['value'].where(df['shift'].eq(0))
推荐阅读
- python - Boto3 - 我可以使用排序键以变量开头的 batch_get_item 获取项目吗?
- database - 是否可以将单独的数据库连接到 wordpress 中的多个用户?
- python - 以随机方式一个一个地获取所有对象
- c# - 来自 MongoDB C# API 的 InsertMany 不返回已确认
- python - 如何使用 Beautiful soup 找到其中没有兄弟姐妹的 P 标签
- karate - 空手道 - 无法在循环中运行动态场景大纲
- spring - Spring DSL:在转换器中使用消息头
- jquery - jQuery modal 也打开了我不想要的链接
- c++ - 使用枚举类的值进行移位移位运算符
- modelmapper - ModelMapper - 尝试跳过目标映射时的 NPE?