python - 从 Numpy 数组获取 Pandas Dataframe 列名称

标签 python excel pandas numpy

我有一个从 Excel 导入的数据框:

>>df

    Name Emp ID  Total Salary     A      B     C     D      E
0   Mike   A001         25000  5000  15000  3000     0   2000
1   John   A002         23000  5000  10000  3000  3000   2000
2    Bob   A003         21000  5000  15000     0  1000      0
3   Rose   A004         20000  5000  10000  2000  1000  20000
4  James   A005         10000  5000      0  3000     0   2000

现在我使用以下代码计算了总工资子集的总和:

代码:

import pandas as pd
import numpy as np

df = pd.read_excel('tmp/test.xlsx')
val = df.drop(['Name','Emp ID','Total Salary'],1)
test = np.array(val)

num = df['Total Salary'][0]
array = test[0]

def subsetsum(array,num):
    if num == 0 or num < 1:
        return None
    elif len(array) == 0:
        return None
    else:
        if np.isclose(array[0],num):
            return [array[0]]
    else:
        with_v = subsetsum(array[1:],(num - array[0])) 
        if with_v:
            return [array[0]] + with_v
        else:
            return subsetsum(array[1:],num)

print('\nValues : ',array)
print('\nTotal Salary : ',num)
print('\nValues of Salary : ',subsetsum(array,num))

输出:

Values :  [ 5000 15000  3000     0  2000]

Total Salary :  25000

Values of Salary :  [5000, 15000, 3000, 0, 2000]

现在我需要一种方法将数组中存在的工资值链接到数据框中存在的列名称。

所以我想要的输出是:

所需输出:

Values :  [ 5000 15000  3000     0  2000]

Total Salary :  25000

Values of Salary :  A - 5000 B - 15000 C - 3000 E - 2000

最佳答案

我建议重写您的 subsetsum 函数以返回所选元素的索引,而不是元素本身(或者如果可行的话,它可能会返回两者)为你变得更好)。例如,

subsetsum([5000, 15000, 3000, 0, 2000], 25000)

将返回[0, 1, 2, 3, 4],或者可能返回[0, 1, 2, 4]。然后您可以使用这些索引来访问相应的列标签以及元素。

关于python - 从 Numpy 数组获取 Pandas Dataframe 列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41357177/

相关文章:

python - pandas.DataFrame.plot(kind ="bar")的更多绘图选项

python - 提取年份的正则表达式

excel - VB-Script 在调用 VBA-Script 后休眠

python - 将轮廓路径转换为 ​​svg 路径

python - Pandas:使用基于不同 DF 的自定义列创建 DF

mysql - 如何比较和删除 excel 中未使用的 ID

java - 如何读取扩展名为*.xlsx的Excel文件?

python - 给定另一个数据帧中两列的值约束,查找一个数据帧的一列中的最大值

python - 如果某些行不存在于其他数据帧中,Pandas 连接两个数据帧并保留一个数据集中的数据

python - df.groupby(.pdGrouper(freq ='D' ) ).idxmax 抛出 ValueError