Pandas 在数据帧的两列之间迭代

Pandas 在数据帧的两列之间迭代,pandas,dataframe,multiple-columns,Pandas,Dataframe,Multiple Columns,我试图在数据帧的两列(“binS99”,“bin3HMax”)之间迭代。这些列的值从0到4。然后,我想在同一数据帧(“df_选择”)中创建一个新列(“概率”),从矩阵“Prob”中获取值。以下代码进入循环。有什么解决办法吗?多谢各位 prob = [[0, 0.00103, 0.00103], [0, 0.00267, 0.00311], [0, 0.00688, 0.01000], [0, 0.0

我试图在数据帧的两列(“binS99”,“bin3HMax”)之间迭代。这些列的值从0到4。然后,我想在同一数据帧(“df_选择”)中创建一个新列(“概率”),从矩阵“Prob”中获取值。以下代码进入循环。有什么解决办法吗?多谢各位

 prob =  [[0,   0.00103,    0.00103],
         [0,    0.00267,    0.00311],
         [0,    0.00688,    0.01000],
         [0,    0.01777,    0.03218]] 

for index, row, in df_selection.iterrows():
    a = int(df_selection.loc[index,"binS99"]) #int(str(row["binS99"]))
    b = int(df_selection.loc[index,"bin3HMax"]) #int(str(row["bin3HMax"]))
   
    df_selection.loc[index,"Probability"]= prob[a][b]

“”“

我认为您需要首先检查列中的最大值是否与列表中的最大值数匹配,然后使用
numpy索引

df_selection = pd.DataFrame({
        'A':list('abcdef'),
         'binS99':[0,1,2,0,2,1],
         'bin3HMax':[1,2,1,0,1,0],

})
print (df_selection)
   A  binS99  bin3HMax
0  a       0         1
1  b       1         2
2  c       2         1
3  d       0         0
4  e       2         1
5  f       1         0

prob =  [[0,   0.00103,    0.00103],
         [0,    0.00267,    0.00311],
         [0,    0.00688,    0.01000],
         [0,    0.01777,    0.03218]] 


我认为您需要首先检查列中的最大值是否与列表中的最大值数匹配,然后使用
numpy索引

df_selection = pd.DataFrame({
        'A':list('abcdef'),
         'binS99':[0,1,2,0,2,1],
         'bin3HMax':[1,2,1,0,1,0],

})
print (df_selection)
   A  binS99  bin3HMax
0  a       0         1
1  b       1         2
2  c       2         1
3  d       0         0
4  e       2         1
5  f       1         0

prob =  [[0,   0.00103,    0.00103],
         [0,    0.00267,    0.00311],
         [0,    0.00688,    0.01000],
         [0,    0.01777,    0.03218]] 


非常不鼓励在数据帧上迭代python循环。为什么要看。您几乎应该始终使用内置操作,因为它们在引擎盖下进行了优化。你介意发布你的df是什么样子吗?我看到了一个利用字典和矢量化操作的潜在解决方案欢迎使用Stackoverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。嗨,我明白了。数据帧有17列和22985行。我只需要上面提到的两个专栏。下面的解决方案如何工作?它工作得很好。(你呢非常不鼓励在数据帧上迭代python循环。为什么要看。您几乎应该始终使用内置操作,因为它们在引擎盖下进行了优化。你介意发布你的df是什么样子吗?我看到了一个利用字典和矢量化操作的潜在解决方案欢迎使用Stackoverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。嗨,我明白了。数据帧有17列和22985行。我只需要上面提到的两个专栏。下面的解决方案如何工作?它工作得很好。(你呢这是我得到的回复:return object.\uuuu getattribute\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(self,name)AttributeError:“Series”object没有属性“to\u numpy”@lucapiiullo-将
更改为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuAttributeError:'Series'对象没有属性'to_numpy'@Lucapiiullo-更改
。to_numpy()
。值
(无
()
)或升级