python - 合并熊猫df中的特定值
问题描述
我目前正在合并第一个和最后string
一个row
. 当它们strings
位于特定值的右侧时,它们将被合并。我希望将其更改为低于特定值。
import pandas as pd
d = ({
'A' : ['X','Foo','','X','Big'],
'B' : ['No','','','No',''],
'C' : ['Merge','Bar','','Merge','Cat'],
})
df = pd.DataFrame(data = d)
m = df.A == 'X'
def f(x):
s = x[x!= '']
x[s.index[1]] = x[s.index[1]] + ' ' + x[s.index[-1]]
x[s.index[-1]] = ''
return x
df = df.astype(str).mask(m, df[m].apply(f, axis=1))
string
此代码在后跟时合并第一个和最后一个X
。
输出:
A B C
0 X No Merge
1 Foo Bar
2
3 X No Merge
4 Big Cat
我希望将其更改为rows
低于该值X
。
预期输出:
A B C
0 X No Merge
1 Foo Bar
2
3 X No Merge
4 Big Cat
解决方案
解决方案非常相似,只有布尔掩码被移动,第一个 NaN 被替换为False
,并且索引 from[1]
也被更改[0]
为 seelct 第一个值(列A
):
m = (df.A == 'X').shift().fillna(False)
def f(x):
s = x[x!= '']
x[s.index[0]] = x[s.index[0]] + ' ' + x[s.index[-1]]
x[s.index[-1]] = ''
return x
df = df.astype(str).mask(m, df[m].apply(f, axis=1))
print (df)
A B C
0 X No Merge
1 Foo Bar
2
3 X No Merge
4 Big Cat
推荐阅读
- javascript - 尝试编写 Fluid App 用户脚本以禁用概念侧边栏自动弹出行为
- python - (psycopg2.ProgrammingError) 无法适应“箭头”类型
- android-studio - Android Studio - 无法标记和删除
- c# - C# WPF 控件表单form2
- c# - 继承基类并更改属性名称
- material-ui - Material UI 示例,ReferenceError: Element is not defined
- php - 具有一个代码库的多个应用程序的结构
- kubernetes - Travis 客户端 - 使用 BitBucket 帐户登录
- unity3d - 将对象旋转到目标,同时旋转以匹配地形坡度
- reactjs - React Js 中的路由?