我可能误解了pd.GroupBy
函数的作用,但我相信这应该断言True。
为什么它断言False
?
a = pd.DataFrame([range(3)]*3,index=map(str, range(3))).T
a.iloc[:,0] = [10, 11, 11]
a.groupby('0').apply(lambda x: print(x.index))
indexes = a.groupby('0').apply(lambda x: x.index)
print(indexes)
index_lengths = a.groupby('0').apply(lambda x: len(x.index))
print(index_lengths)
indexes_lengths = a.groupby('0').apply(lambda x: x.index).apply(len)
print(indexes_lengths)
assert indexes_lengths.equals(index_lengths), "Apply indexes are returning the wrong index"
最佳答案
也许是错误,但如果将索引转换为列表
,一切都很好:
indexes = a.groupby('0').apply(lambda x: list(x.index))
print(indexes)
0
10 [0]
11 [1, 2]
dtype: object
indexes_lengths = a.groupby('0').apply(lambda x: list(x.index)).apply(len)
print(indexes_lengths)
0
10 1
11 2
dtype: int64
index_lengths = a.groupby('0').apply(lambda x: len(x.index))
print(index_lengths)
0
10 1
11 2
dtype: int64
关于python - Pandas groupby 索引不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130608/