有条件地将记录添加到数据帧中



我有一个棒球运动员的名册,我将其放入数据帧中。我正在筛选出所有不在内场的球员(位置=1B、2B、3B、SS、IF(。我正在努力为我想放弃的球员设定一些标准,并用不同名单中更好的球员取代。我想我应该在我的数据帧上添加一个列,根据标准可以选择是或否。然后我会将这些记录移动到一个新的数据帧中。这是一个好方法吗?我的for循环当前出现此错误。ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

import pandas as pd
import numpy as np
np.set_printoptions(precision=3,suppress=True)
data = pd.read_excel ("Cleveland roster.xlsx")
df = pd.DataFrame(data, columns=['Pos','Name','R','H','HR','RBI','BA','OBP','SLG','OPS'])
df.fillna(data.mean(), inplace=True)
df=df[df['Pos'].isin(['1B','2B','SS','3B','IF'])]
print ('Infielders on the team:')
print (df)

for ind, row in df.iterrows():
if df['BA'] < .2:
df.loc[ind, 'KEEP'] = 'No'
else:
df.loc[ind, 'KEEP'] = 'Yes'

您可以使用numpy.where((在一行中执行您想要的操作。

df['KEEP'] = np.where(df['BA'] < .2, 'No', 'Yes')

如果要移动符合<。将2个条件放入新的数据帧中,可以使用布尔索引。

df_ = df.loc[df['BA'] < .2]

最新更新