python - 在熊猫df中移动行
问题描述
我正在尝试shift
在pandas df
. 具体来说,rows
即遵循特定的value
. 对于下面的,当上面的值为 时,df
我想向左。shift
row
== 'X'
d = ({
'A' : ['Foo','','Foo',''],
'B' : ['X','Bar','X','Bar'],
'C' : ['','Y','','Y'],
})
df = pd.DataFrame(data=d)
出去:
A B C
0 Foo X
1 Bar Y
2 Foo X
3 Bar Y
我试过这个:
b = ['X']
x = df.B=='X'
df.loc[x, b] = df.loc[x, b].apply(lambda x: x.shift(-1), axis=1)
预期输出:
A B C
0 Foo X
1 Bar Y
2 Foo X
3 Bar Y
虽然这些strings
是相同的,但我的数据集会有所不同。Foo
将是相同的string
,但随后X
会有所不同。所以我不能只是选择Bar
并shift
row
离开。我需要一些能找到row
下面X
并左移的东西
解决方案
国际大学联盟
s = (df == 'X').any(1)
idx_to_change = s[s].index+1
df.loc[idx_to_change,:] = df.loc[idx_to_change].shift(-1,axis=1)
df.fillna('')
A B C
0 Foo X
1 Bar Y
2 Foo X
3 Bar Y
推荐阅读
- javascript - 在使用 face-api.js 进行人脸检测后,有什么方法可以自动裁剪人脸?
- c# - 使用 C# 和 CMD 定义防火墙
- javascript - jspdf.html 方法不分页(或将内容推送到下一页)
- web-services - 当我尝试使用 Coldfusion Web 服务上传文件时出现 Enctype 问题
- c# - 尝试在 pod/容器中添加证书时出现权限被拒绝错误
- python - 根据字典顺序为字符串 s 分配唯一值
- python - Gemini API Python {'result': 'error', 'reason': 'InvalidSignature', 'message': 'InvalidSignature'}
- laravel - 如何在 laravel livewire 中编辑多个图像上传中的特定图像
- python - 将二进制拆分为 0 和 1 组并获取边界索引
- vue.js - 此属性交互性正在触发所有单个组件实例