繁体   English   中英

如何使用单元格中的字符串重新排序 pandas 中的 dataframe?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM