我在网上看到了我正在玩的这段代码,并试图从中学习。试图附加到创建的空数组时卡住了吗?它返回一个indexerror,“ IndexError:索引0超出了轴0的大小0的范围”。请查看下面的代码,感谢您提供的修复帮助。谢谢。
f_HAS = []
f_HDS = []
f_AAS = []
f_ADS = []
for index,row in feat_table.iterrows():
#print row
f_HAS.append(table_16[table_16['Team'] == row['HomeTeam']]
['HAS'].values[0])
f_HDS.append(table_16[table_16['Team'] == row['HomeTeam']]
['HDS'].values[0])
f_AAS.append(table_16[table_16['Team'] == row['HomeTeam']]
['AAS'].values[0])
f_ADS.append(table_16[table_16['Team'] == row['HomeTeam']]
['ADS'].values[0])
feat_table['HAS'] = f_HAS
feat_table['HDS'] = f_HDS
feat_table['AAS'] = f_AAS
feat_table['ADS'] = f_ADS
期望将值附加到新数组中
但它返回了: ------ IndexError:索引0超出了大小为0的轴0的范围
答案 0 :(得分:0)
我已经创建了一些数据来尝试您的示例:
table_16 = pd.DataFrame({'Team':[1,2,3,4,4],
'HAS':['a','b','c','d','e'],
'HDS':['q','w','e','r','t'],
'HomeTeam':[1,4,4,2,6]})
feat_table = pd.DataFrame()
我做了一些修改:
f_HAS = []
f_HDS = []
for index,row in table_16.iterrows():
f_HAS.append(table_16[table_16['Team'] == row['HomeTeam']]['HAS'].values[0])
f_HDS.append(table_16[table_16['Team'] == row['HomeTeam']]
['HDS'].values[0])
feat_table['HAS'] = f_HAS
feat_table['HDS'] = f_HDS
我得到同样的错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-833-3b6ee6636bcd> in <module>
6 for index,row in table_16.iterrows():
----> 7 f_HAS.append(table_16[table_16['Team'] == row['HomeTeam']]['HAS'].values[0])
8 f_HDS.append(table_16[table_16['Team'] == row['HomeTeam']]
9 ['HDS'].values[0])
IndexError: index 0 is out of bounds for axis 0 with size 0
之所以发生这种情况,是因为在其中一次迭代中,没有像table_16[table_16['Team'] == row['HomeTeam']]
这样的原始字符,并且我们不能接受values[0]
,因为它是空的。
尝试这样的事情:
good_raws = []
for index,row in table_16.iterrows():
good_raws.append(table_16[table_16['Team'] == row['HomeTeam']])
输出是带有pandas DataFrames的数组。我看到您想要一个数据框,而不是数组。因此,您可以将其与(其中pd
是熊猫模块)进行串联:
pd.concat(good_raws)
并有一个数据框:
Team HAS HDS HomeTeam
0 1 a q 1
3 4 d r 2
4 4 e t 6
3 4 d r 2
4 4 e t 6
1 2 b w 4
此外,在我的最后一个示例中,我仅使用一个列表来收集所有原始数据(而不是像源代码中那样按单元格收集),因为它会更快,并且在此示例中这没关系。
希望对您有所帮助,但是我认为您的代码示例不是一个很好的示例,请尝试查找一些更好的知识来学习和阅读pandas文档,其中有很多很好的代码示例!