qq_45971013
2021-03-28 17:14
采纳率: 71.4%
浏览 71

python中用pandas处理数据

 

对于这种csv文件,用pandas怎么可以将红圈部分的数据补全,每个学生都考了四门,怎样可以进行数据补全,整个csv文件也没有空值。

求大佬支援

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

    试下这种方式:

    先构造一个姓名和科目的二维表, 然后merge. 可以对缺失值进行填充

    import pandas as pd
    import numpy as np
    
    data = pd.read_excel('c:/users/yyz/desktop/123.xlsx')
    
    lis1 = data['科目'].unique().tolist()
    lis2 = data['姓名'].unique().tolist()
    
    data2 = pd.DataFrame([[i,j] for i in lis2 for j in lis1],columns=['姓名','科目'])
    
    result = pd.merge(data,data2,on=['姓名','科目'],how='outer').sort_values(by=['姓名','科目']).reset_index(drop=True)
    print(result)
               科目          姓名    成绩
    0   algorithm  zhaoyuchen  21.0
    1    computer  zhaoyuchen  22.0
    2     english  zhaoyuchen  20.0
    3        math  zhaoyuchen   NaN
    4   algorithm      zhouqi  19.0
    5    computer      zhouqi   NaN
    6     english      zhouqi  18.0
    7        math      zhouqi   NaN
    8   algorithm     zhoutao  15.0
    9    computer     zhoutao  17.0
    10    english     zhoutao  14.0
    11       math     zhoutao  16.0
    12  algorithm         zss  11.0
    13   computer         zss  13.0
    14    english         zss  10.0
    15       math         zss  12.0
    已采纳该答案
    打赏 评论
  • CSDN专家-HGJ 2021-03-28 17:51

    是指打印输出全部显示吧。这只是控制台在df输出行数多(或列数过多 )时中间部分会以...表示,将其保存到csv中会全部显示的。如需在输出窗口全部显示,那就在代码中打印语句前进行设置,加上pd.set_option("display.max_rows", None)

    打赏 评论
  • 有问必答小助手 2021-03-29 09:24

    您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论

相关推荐 更多相似问题