【问题标题】:Adding values per 4 rows in pandas在熊猫中每 4 行添加值
【发布时间】:2020-03-01 13:19:32
【问题描述】:

我用的是“pandas.read_csv”,数据如下图

   A     B      C       D
00  2019-2  315993352  7           78
01  2019-1  317515869  3           69
02  2018-4  318533054  4           66
03  2018-3  318769547  5           65
04  2018-2  319952126  6           69
05  2018-1  322476579  None        70
06  2017-4  323018027  5           63
07  2017-3  321828003  4           58
08  2017-2  321337443  3           52
09  2017-1  322300905  4           46
10  2016-4  321747881  3           45
11  2016-3  324384755  2           44
12  2016-2  456366381  5           50
13  2016-1  453014579  3           70
14  2015-4  452271967  4           115
15  2015-3  452000000  2           59
16  2015-2  453243847  None      59
17  2015-1  321738470  1           62

它有 18 行。 我想每 4 行添加 C 列的值并创建新的数据框: 第0行+第1行+第2行+第3行(7+3+4+5) 第4行+第5行+第6行+第7行(6+0+5+4) 第8行+第9行+第10行+第11行(3+4+3+2) 第12行+第13行+第14行+第15行(5+3+4+2)

而 18 不能被 4 整除 所以我想扔 row16,row17

+)而我想要的结果是

19
15
12
14

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    用途:

    N = 4
    
    #first remove last rows if remainders
    df = df.iloc[:len(df) // N * N]
    #convert to numeric
    df['C'] = pd.to_numeric(df['C'], errors='coerce')
    #aggregate sum 
    df = df.groupby(np.arange(len(df)) // N)['C'].sum().to_frame()
    print (df)
          C
    0  19.0
    1  15.0
    2  12.0
    3  14.0
    

    对于整数,可以将缺失或无值替换为0

    N = 4
    
    df = df.iloc[:len(df) // N * N]
    
    df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0).astype(int)
    
    df = df.groupby(np.arange(len(df)) // N)['C'].sum().to_frame()
    print (df)
        C
    0  19
    1  15
    2  12
    3  14
    

    【讨论】:

    • 然后出现新的错误标志。 ValueError:无法将字符串转换为浮点数:'None'
    • @MonoNeuElogy - 然后使用 df['C'] = pd.to_numeric(df['C'], errors='coerce') - 它将 None 替换为 NaN。如果我的回答有帮助,请不要忘记accept。谢谢。
    • 真的很抱歉。我改变了我的例子。
    猜你喜欢
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2016-07-27
    • 2017-08-03
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多