Pandas 根据条件更改dataframe行中的值

Pandas 根据条件更改dataframe行中的值,pandas,Pandas,我有一个具有特定值的数据帧,并希望在一个条件下交换一行中的值。如果值大于x,我希望它变为零。我尝试使用.loc,但每次尝试时都会出现一个键错误。.loc用于选择行而不是列吗?我以前在列中使用过它,但我无法在行中使用它 df=pd.DataFrame({'a':np.random.randn(4),'b':np.random.randn(4),'c':np.random.randn(4)}) 打印(df) df.loc['Total']=df.sum() df.loc[(df['Total']

我有一个具有特定值的数据帧,并希望在一个条件下交换一行中的值。如果值大于x,我希望它变为零。我尝试使用.loc,但每次尝试时都会出现一个键错误。.loc用于选择行而不是列吗?我以前在列中使用过它,但我无法在行中使用它

df=pd.DataFrame({'a':np.random.randn(4),'b':np.random.randn(4),'c':np.random.randn(4)})
打印(df)
df.loc['Total']=df.sum()
df.loc[(df['Total']

我也尝试过使用iloc,但又出现了另一个错误。我不认为这是一个复杂的问题,但我有点卡住了,所以帮助将不胜感激

您可以使用
loc
-首先通过字符串为repalce值设置行-此处
Total
,因为设置行标签
Total
,然后比较
loc
选择的行的值-它返回布尔掩码:

np.random.seed(2019)
df = pd.DataFrame({'a': np.random.randn(4), 'b': np.random.randn(4), 'c': np.random.randn(4)})
print(df)
          a         b         c
0 -0.217679 -0.361865 -0.235634
1  0.821455  0.685609  0.953490
2  1.481278  0.573761 -1.689625
3  1.331864  0.287728 -0.344943

df.loc['Total'] = df.sum()


x = 1
df.loc['Total', df.loc['Total'] < x] = 0
print (df)
              a         b         c
0     -0.217679 -0.361865 -0.235634
1      0.821455  0.685609  0.953490
2      1.481278  0.573761 -1.689625
3      1.331864  0.287728 -0.344943
Total  3.416918  1.185233  0.000000
np.random.seed(2019年)
df=pd.DataFrame({'a':np.random.randn(4),'b':np.random.randn(4),'c':np.random.randn(4)})
打印(df)
a、b、c
0 -0.217679 -0.361865 -0.235634
1  0.821455  0.685609  0.953490
2  1.481278  0.573761 -1.689625
3  1.331864  0.287728 -0.344943
df.loc['Total']=df.sum()
x=1
df.loc['Total',df.loc['Total']
详细信息

print (df.loc['Total'] < x)
a    False
b    False
c     True
Name: Total, dtype: bool
打印(df.loc['Total']