我通过一个数据框(称为HDF)迭代和按行的基础上连续应用更改。 hdf按group_id排序,并根据某些标准分配1到n的排名。转换Int64Index为Int
# Groupby function creates subset dataframes (a dataframe per distinct group_id).
grouped = hdf.groupby('group_id')
# Iterate through each subdataframe.
for name, group in grouped:
# This grabs the top index for each subdataframe
index1 = group[group['group_rank']==1].index
# If criteria1 == 0, flag all rows for removal
if(max(group['criteria1']) == 0):
for x in range(rank1, rank1 + max(group['group_rank'])):
hdf.loc[x,'remove_row'] = 1
,我发现了以下错误:
TypeError: int() argument must be a string or a number, not 'Int64Index'
我得到同样的错误,当我尝试显式强制等级-1中,我得到了同样的错误:
rank1 = int(group[group['auction_rank']==1].index)
谁能解释发生了什么并提供替代方案?
这并不完全清楚你在问什么。 'index1 = group [group ['group_rank'] == 1] .index'行返回所有行号的列表,其中'group_rank'等于1.这意味着将其转换为整数? –
group_rank对每个组都是唯一的。因此,如果有一个组内的5行,该组行列将1至5 我将最终从HDF其中remove_row = 1找出是否一个行的逻辑应该从HDF移除删除所有行需要被在groupby for循环中完成。我需要hdf索引来进行保持hdf的更改,而不是组数据框。 loc函数接受的不是Int64Index。 –
你想删除整个组如果'MAX(集团[“标准1”] == 0'? –