所以我有一个数据框架,其中有多个列和数字。它看起来像这样:
<表类>
H
C
T
P
R
tbody><<tr>300 200 500 0.3 500 400 300 0.2 表类>
您应该使用位&
和括号,而不是and
。
df['R'] = numpy.where((df['H'] > df['T']) & (df['P'] > 0),
df['C'] / df['T'] - 1, 0)
试试这个
import pandas as pd
d = {'H': [300, 500], 'C': [200, 400], 'T': [500, 300], 'P': [0.3, 0.2]}
df = pd.DataFrame(d)
df
创建一个函数:
def calc(row):
if row[0] > row[2]:
if row[3] > 0:
return row[1]/row[2] - 1
else:
return 0
然后应用函数,通过行
df['R'] = df.apply(calc, axis=1)
df