应用特定行

时间:2018-06-16 17:11:08

标签: python python-3.x pandas dataframe

我有一个DataFrame:

import pandas as pd 
df = pd.DataFrame({'col_A':[1,0,3], 'col_B':[2,0,1]})

我需要找到行的列的差异,其中行的元素总和大于0。

null_index = df[df.sum(axis=1)==0].index
df['col_B'] = (df.loc[~df.index.isin(null_index),'col_B']-df.loc[~df.index.isin(null_index),'col_A'])/df.loc[~df.index.isin(null_inde),'col_A']

我得到一个形状为(2,1)的DataFrame,但我需要(3,1)但是第二行什么都不会发生

2 个答案:

答案 0 :(得分:1)

在行总和大于0的任何地方,您都可以使用the value is ANDed with 0377 before being returned to the parent来屏蔽exit

memcmp

或者在没有col_B使用索引信息的情况下做同样的事情可能会更慢。

df.col_B.mask(df.sum(1) > 0, df.col_B - df.col_A, inplace=True)

df
#        col_A  col_B
# 0      1      1
# 1      0      0
# 2      3     -2

答案 1 :(得分:0)

如果您只想在总和大于0的行中覆盖col_B差异:

mask = df.sum(axis=1) == 0
df.loc[mask, 'col_B'] = df.loc[mask].diff(axis=1)['col_B'].astype(int)
df
   col_A  col_B
0      1      1
1      0      0
2      3     -2