简体   繁体   中英

Filter data-frame rows based on conditions Pandas

I have a data-frame df like this:

[ Date : mm/dd/yyyy ]

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       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

How can I get all the unique Date s for each of individual Student_id 's.

Output date_df :

Date           Student_id
11/30/2020     1000101
11/25/2020     1000101
12/02/2020     1000101
11/25/2020     1000102
12/15/2020     1000102
12/15/2020     1000103

Also , I need counts of unique Date s for each of Student_id :

Student_id   unique_date_count
1000101        3
1000102        2
1000103        1

Edits: I cannot drop any rows because of unique subejcts, so how can I get unique dates and its count for each of Student_id

Thanks for the help, in advance!

Use DataFrame.drop_duplicates :

df1 = df[['Date','Student_id']].drop_duplicates()
print (df1)
         Date  Student_id
0  11/30/2020     1000101
1  11/25/2020     1000101
2  12/02/2020     1000101
6  11/25/2020     1000102
8  12/15/2020     1000102
9  12/15/2020     1000103

And then Series.value_counts :

s = df1['Student_id'].value_counts()
print (s)
1000101    3
1000102    2
1000103    1
Name: Student_id, dtype: int64

Last if need DataFrame add Series.rename_axis and Series.reset_index :

df2 = s.rename_axis('Student_id').reset_index(name='unique_date_count')
print (df2)
   Student_id  unique_date_count
0     1000101                  3
1     1000102                  2
2     1000103                  1

first, you need to do:

df_new=df.drop_duplicates()

Second,you can do value_counts ,

df_new['Student_id'].value_counts()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM