![](/img/trans.png)
[英]Most effecient way to take a difference of each column in dataframe and re-oder once done
[英]How to re-oder a dataframe in pandas using a string in cell?
我一直在尝试通过定位包含字符串negative
的单元格来重新排序 pandas 中的 dataframe ,删除此行并将新列添加到 dataframe 中,它区分包含字符串negative
的单元格之前的行并将它们称为'POSITIVE'
而以前在字符串之后的行称它们为'NEGATIVE'
。
这是 dataframe 的最小示例:
d = {'col1': [1, 2, 'negative', 4,5],
'col2': [6,7,None, 8,9],
'col3':[10,11,None,12,13] }
data = pd.DataFrame(data=d)
这就是我一直在努力实现的目标:
arget = {'col1': [1, 2, 4, 5],
'col2': [6,7, 8,9],
'col3':[10,11, 12,13],
'col4':['POSTIVE','POSTIVE','NEGATIVE', 'NEGATIVE' ] }
target = pd.DataFrame(data= target)
我试图拆分 dataframe,然后删除该行,然后添加新列,最后再次加入它们。 我想知道 pandas 中是否有更好的方法来实现这一点?
首先对第一个mask
进行negative
比较,然后将累积和与以前的值进行比较,并将其与mask1
进行比较,传递给numpy.where
最后通过在~
boolean indexing
中通过反转掩码来删除negative
行:
mask = data['col1'].eq('negative')
mask1 = mask.cumsum().eq(0)
data['col4'] = np.where(mask1, 'POSTIVE','NEGATIVE')
data = data[~mask].copy()
print (data)
col1 col2 col3 col4
0 1 6.0 10.0 POSTIVE
1 2 7.0 11.0 POSTIVE
3 4 8.0 12.0 NEGATIVE
4 5 9.0 13.0 NEGATIVE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.