使用一个色谱柱进行Pandas过滤,并更换为另一个色谱柱[重复]

rekjcdws  于 2023-01-11  发布在  其他
关注(0)|答案(1)|浏览(100)
    • 此问题在此处已有答案**:

Pandas conditional creation of a series/dataframe column(12个答案)
昨天关门了。
我有一个 Dataframe 如下

df = pd.DataFrame(
    {'stud_id' : [101, 101, 101, 101, 
                  101, 101, 101, 101],
     'sub_code' : ['CSE01', 'CSE02', 'CSE03', 
                   'CSE06', 'CSE05', 'CSE04',
                   'CSE07', 'CSE08'],
     'marks' : ['A','B','C','D',
                'E','F','G','H']}
)

我想做以下几点
a)使用值列表基于sub_code过滤我的 Dataframe
b)对于过滤/选择的行,将其marks值替换为常数值-FAIL
因此,我尝试了下面的方法,但是它不起作用,并且对于未过滤的行导致NA。

sub_list = ['CSE01', 'CSE02', 'CSE03','CSE06', 'CSE05', 'CSE04']
df['marks'] = df[df['sub_code'].isin(sub_list)]['marks'].replace(r'^([A-Za-z])*$','FAIL', regex=True)

我希望我的输出如下所示

rryofs0p

rryofs0p1#

您可以使用pandas.loc

代码:

df.loc[df["sub_code"].isin(sub_list), "marks"] = "FAIL"

输出:

stud_id sub_code    marks
101 CSE01   FAIL
101 CSE02   FAIL
101 CSE03   FAIL
101 CSE06   FAIL
101 CSE05   FAIL
101 CSE04   FAIL
101 CSE07   G
101 CSE08   H

相关问题