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