如何将数据框列表除以值列表?

时间:2018-11-07 09:54:38

标签: python pandas list loops dataframe

(1)我有29个数据帧的列表

(2)我有29个值的列表(都为int64)

我想将列表中的(1)列除以(2)的值-它们的排序顺序是我要除以的正确顺序

因此,例如,我希望将列表1中的第一个数据帧(第二列中的所有值)除以列表2中的第一个值。我希望将列表1中的第二个数据帧(第二列中的所有值)除以除以清单2中的第二个值,依此类推。例如:

这是我第一个列表中的第六个数据帧:

    print(lst_1[6]):

   ITIS  q9036
0   7.0      7
1   2.0      5
2   1.0      4
3   3.0      3
4   5.0      2

这是我第二个列表中的第六个整数,值为14:

print(lst_2[6]):

array([[14]], dtype=int64

所以我要达到的结果是这样的:

   ITIS  q9036  Total  Result
0   7.0      7  14     0.50
1   2.0      5  14     0.36     
2   1.0      4  14     0.29
3   3.0      3  14     0.21
4   5.0      2  14     0.14

我想对所有29个整数的所有29个数据帧执行此操作

其他注意事项:第二列始终使用不同的名称

1 个答案:

答案 0 :(得分:2)

将列表理解与zipassign一起使用,因为必须通过[0][0]选择每个整数都位于numpy数组中:

dfs = [df.assign(total = i[0][0], 
                 result = df.iloc[:, -1] / i[0][0]) for i, df in zip(lst_2, lst_1)]

编辑:

dfs = [df.assign(total = i[0][0], 
                 a = df.iloc[:, -1] / i[0][0])
        .rename(columns={'a':'{}_pct'.format(df.columns[-1])}) for i, df in zip(lst_2, lst_1)]