首页 > 解决方案 > 逐行解析数据帧

问题描述

我有一个数据框,它有 5 列,分别命名为 '0'、'1'、'2'、'3'、'4'

small_pd
Out[53]: 
          0     1     2     3     4 
0      93.0  94.0  93.0  33.0   0.0  
1      92.0  94.0  92.0  33.0   0.0 
2      92.0  93.0  92.0  33.0   0.0  
3      92.0  94.0  20.0  33.0  76.0 

我想逐行使用上面的输入来提供执行以下操作的函数。我以第一行和第二行为例

第一排:

takeValue[0,0]-takeValue[0,1]+takeValue[0,2]-takeValue[0,3]+takeValue[0,4]

第二排:

   takeValue[1,0]-takeValue[1,1]+takeValue[1,2]-takeValue[1,3]+takeValue[1,4]

从第三行开始,然后将所有这些结果分配为额外的列。

small_pd['extracolumn']

有没有办法避免python中典型的for循环并以更好的方式做到这一点?

你能给我建议吗?非常感谢亚历克斯

标签: pythonpandasfor-loop

解决方案


您可以使用pd.apply

df = pd.DataFrame(data={"0":[93,92,92,92],
                   "1":[94,94,93,94],
                   "2":[93,92,92,20],
                   "3":[33,33,33,33],
                   "4":[0,0,0,76]})

def calculation(row):
    return row["0"]-row["1"]+row["2"]-row["3"]+row["4"]


df['extracolumn'] = df.apply(calculation,axis=1)
print(df)
    0   1   2   3   4  result
0  93  94  93  33   0      59
1  92  94  92  33   0      57
2  92  93  92  33   0      58
3  92  94  20  33  76      61

推荐阅读