根据两个不同单元格的比较设置单元格值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我需要比较一列中的两行并将其输出到另一列。从某种意义上说,我得到了一个游戏的最终得分,每个团队都列在其他统计数据上。我想创建一个标记赢家“W”和输家“L”的列。

我已经尝试 df2.iloc[0, 3].where(df2.iloc[0, 2] > df2.iloc[1, 2], 'W', inplace = True)df2.iloc[0, 3] = df2.where(df2.iloc[0, 2] > df2.iloc[1, 2], df.iloc[0, 3] =='W', inplace = True)

我在其他尝试中遇到的两个最常见的错误是:AttributeError:'str'对象没有属性'where'和ValueError:Array条件必须与self相同的形状

Tm  H/A  Final W/L/T
SFO   A     16     T
NYG   H     13     T
df1 = pd.read_csv('20020905_nyg_scoring.csv', header = 0, index_col = 0)
df1.drop(['Detail', 'Quarter', 'Time', 'Tm'], axis = 1, inplace = True)

df2 = pd.read_csv('20020905_nyg_team_stats.csv', header = 0, index_col = 1)
df2.drop('Unnamed: 0', axis = 1, inplace = True)
df2 = df2.transpose()
df2.reset_index(inplace = True)
df2.rename(columns = {'index':'Tm'}, inplace = True)
df2.insert(1, 'H/A', ['A', 'H'])
df2.insert(2, 'Final', (df1.iloc[-1, 0], df1.iloc[-1, 1]))
df2.insert(3, 'W/L/T', 'T')
pd.to_numeric(df2['Final'])
df2.iloc[0, 3].where(df2.iloc[0, 2] > df2.iloc[1, 2], 'W', inplace = True)
print(df2)

最终,预期结果应该给出SFO线的W和W / L / T下的NYG线的L.

提问于
用户回答回答于

使用a np.where来获取WL一个if语句来检查它是否是平局,如果它是指定的T

df['W/L/T'] = np.where(df['Final'] > df['Final'].shift(-1), 'W', 'L')
if (df['Final'].shift() == df['Final']).any():
    df['W/L/T'] = 'T'
print(df)

输出:

    Tm H/A  Final W/L/T
0  SFO   A     16     W
1  NYG   H     13     L

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问5 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    2 粉丝477 提问3 回答
  • 军哥

    重庆雷驰信息技术有限公司 · 经理 (已认证)

    5 粉丝1 提问3 回答

扫码关注云+社区

领取腾讯云代金券