根据日期列在熊猫数据框中插入行

我有一个数据框 df 和一个列表 li,我的数据框列包含:


    Student     Score   Date  

    A             10      15-03-19

    C             11      16-03-19

    A             12      16-03-19

    B             10      16-03-19

    A             9       17-03-19

我的列表包含所有学生的姓名 li=[A,B,C] 如果任何学生在特定日期没有来,则在数据框中插入学生的姓名,分数值为 0


我的最终数据框应该是这样的:


    Student   Score   Date

    A         10      15-03-19

    B         0       15-03-19

    C         0       15-03-19

    C         11      16-03-19

    A         12      16-03-19 

    B         10      16-03-19

    A         9       17-03-19

    B         0       17-03-19

    C         0       17-03-19


犯罪嫌疑人X
浏览 127回答 1
1回答

森林海

使用DataFrame.reindex有MultiIndex.from_product:li = list('ABC')mux = pd.MultiIndex.from_product([df['Date'].unique(), li], names=['Date', 'Student'])df = df.set_index(['Date', 'Student']).reindex(mux, fill_value=0).reset_index()print (df)       Date Student  Score0  15-03-19       A     101  15-03-19       B      02  15-03-19       C      03  16-03-19       A     124  16-03-19       B     105  16-03-19       C     116  17-03-19       A      97  17-03-19       B      08  17-03-19       C      0替代方法是使用左连接DataFrame.merge和辅助 DataFrame 创建product,最后替换缺失值fillna:from  itertools import productdf1 = pd.DataFrame(list(product(df['Date'].unique(), li)), columns=['Date', 'Student'])df = df1.merge(df, how='left').fillna(0)print (df)       Date Student  Score0  15-03-19       A   10.01  15-03-19       B    0.02  15-03-19       C    0.03  16-03-19       A   12.04  16-03-19       B   10.05  16-03-19       C   11.06  17-03-19       A    9.07  17-03-19       B    0.08  17-03-19       C    0.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python