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