Python 在dataframe中查找某些列名和位置

Python 在dataframe中查找某些列名和位置,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我的输入数据是什么: 存储在具有定义索引的数据帧中的三角形矩阵 和列名 与数据帧中的列数相同长度的列表 从列表中获取一项作为输入的函数 我下一步想做的是: 基于数据帧中的值将函数应用于列表 根据数据框的列,为另一个列表中的每个项目绘制函数结果 一个小例子: scores = np.array([[1,2,1.5,0.75], [0,1,0.75,1.25], [0,0,1,2], [0,

我的输入数据是什么:

  • 存储在具有定义索引的数据帧中的三角形矩阵 和列名
  • 与数据帧中的列数相同长度的列表
  • 从列表中获取一项作为输入的函数
我下一步想做的是:

  • 基于数据帧中的值将函数应用于列表
  • 根据数据框的列,为另一个列表中的每个项目绘制函数结果
一个小例子:

scores = np.array([[1,2,1.5,0.75],
                 [0,1,0.75,1.25],
                 [0,0,1,2],
                 [0,0,0,1]])
names = ['Andy','Bob','Craig','Dan']

bets = [100,120,135,130]

def getPrize(bet, x): # x defined somewhere elsewhere
    prize = bet*x #do stuff here
    return prize

names1 = ['Andy1','Bob1','Craig1','Dan1']

Results = pd.DataFrame(data=scores,index=names1,columns=names1)
现在,我在dataframe中的值上定义了一个条件,并基于该条件,我希望找到相关列的位置(整数值,就像-相反-我使用df.iloc查找它一样)

我尝试的是:

for i, r in Results.iterrows():
    found = r[r>1]
    col_index = r.columns.get_loc(found)
    print col_index
但这里我面临的问题是
AttributeError:'Series'对象没有属性'columns'
。 但如果我写这封信:

col_ix, col_name = found.iteritems() 
我获得
值错误:需要超过1个值才能解包
-因此我没有正确使用iteritems?但是,如果I
print
这些值,则会在抛出错误之前打印它们


最后,我希望有一个单独的绘图,y轴上显示“奖品”,x轴上显示姓名,根据条件为每个人绘制奖品的选定值(因此,我试图实现的另一件事是找到
姓名
列表中的哪个项目是我得到的每个列名的子字符串).

最简单的只有多个:

print (results.mul(np.array(bets)))
        Andy    Bob   Craig    Dan
Andy   100.0  240.0  202.50   97.5
Bob      0.0  120.0  101.25  162.5
Craig    0.0    0.0  135.00  260.0
Dan      0.0    0.0    0.00  130.0
但如果实际功能更复杂,请使用:

编辑:

如果需要,所有列的位置都是必需的
列表理解
(或某些循环),因为仅适用于标量:

for i, r in Results.iterrows():
    found = r[r>1]
    col_index = [r.index.get_loc(x) for x in found.index]
    print (col_index)

[1, 2]
[3]
[3]
[]

我懂了!谢谢你们,回答得好,但问题错了。它不适用于我的真实数据,现在我明白了原因。我将编辑这个问题。是的,我正在考虑你的问题,这取决于你的职能。您的函数是否真的很复杂,在不应用的情况下无法使用pandas或numpy函数?如果可能,最好是添加所需的输出,也可以更改输入以更好地理解。谢谢。我现在改了问题。谢谢你的耐心。
for i, r in Results.iterrows():
    found = r[r>1]
    col_index = [r.index.get_loc(x) for x in found.index]
    print (col_index)

[1, 2]
[3]
[3]
[]