我有一个像这样的数据框df
:
Date Student_id Subject Subject_Scores
11/30/2020 1000101 Math 70
11/25/2020 1000101 Physics 75
12/02/2020 1000101 Biology 60
11/25/2020 1000101 Chemistry 49
11/25/2020 1000101 English 80
12/02/2020 1000101 Biology 60
11/25/2020 1000101 Chemistry 49
11/25/2020 1000101 English 80
12/02/2020 1000101 Sociology 50
11/25/2020 1000102 Physics 80
11/25/2020 1000102 Math 90
12/15/2020 1000102 Chemistry 63
12/15/2020 1000103 English 71
案例:1
如果我使用df[df['Student_id]=='1000102']['Date']
,则会给出该特定Student_id
的唯一日期。
如何在单一条件下获得相同的多列结果。
我想根据条件获取多列,如何为 Student_id = 1000102 获取类似这样的输出 df
:
Date Subject
11/25/2020 Physics
11/25/2020 Math
12/15/2020 Chemistry
我已经尝试过这个,但出现错误:
df[df['Student_id']=='1000102']['日期', '主题']
并且
df[df['Student_id']=='1000102']['日期']['主题']
案例:2
如何在上述场景中使用 df.unique()(对于多列)
df[df['Student_id']=='1000102']['Date', 'Subject'].unique() #this 给出错误
这怎么可能实现。
最佳答案
您可以将列表传递给DataFrame.loc
:
df1 = df.loc[df['Student_id']=='1000102', ['Date', 'Subject']]
print (df1)
Date Subject
9 11/25/2020 Physics
10 11/25/2020 Math
11 12/15/2020 Chemistry
如果需要唯一值,请添加 DataFrame.drop_duplicates
:
df2 = df.loc[df['Student_id']=='1000102', ['Date', 'Subject']].drop_duplicates()
print (df2)
Date Subject
9 11/25/2020 Physics
10 11/25/2020 Math
11 12/15/2020 Chemistry
如果需要Series.unique
分别为每一列:
df3 = df.loc[df['Student_id']=='1000102', ['Date', 'Subject']].apply(lambda x: x.unique())
print (df3)
Date [11/25/2020, 12/15/2020]
Subject [Physics, Math, Chemistry]
dtype: object
关于python - Pandas:根据条件获取多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66346050/