关于pandas之apply的使用错误情况,如‘str’ object is not callable和unhashable type

“原 DataFrame” 与 “使用了 groupby 之后的分组 DataFrame",在调用 apply 方法时,有些许差异

df = pd.DataFrame([[j for j in range(1, 5)] for i in range(5)], index=list("ABBDA"))
df
# Out[227]: 
#    0  1  2  3
# A  1  2  3  4
# B  1  2  3  4
# B  1  2  3  4
# D  1  2  3  4
# A  1  2  3  4

""" 1、直接使用函数名时,都能正常运行 """
df.apply(min, axis=1)
# Out[265]: 
# A    1
# B    1
# B    1
# D    1
# A    1
# dtype: int64

df.groupby(df.index).apply(min, axis=1)
# Out[276]: 
# A  A    1
#    A    1
# B  B    1
#    B    1
# D  D    1
# dtype: int64


""" 2、使用函数名的字符串形式时,进行了分组操作的 DataFrame 就会报错 """
df.apply('min', axis=1)
# Out[288]: 
# A    1
# B    1
# B    1
# D    1
# A    1
# dtype: int64

# 报错:AttributeError: 'DataFrame' object has no attribute 'dtype'
# df.groupby(df.index).apply('min', axis=1)

# 报错:TypeError: 'str' object is not callable
# df.groupby(df.index).apply('min')



""" 3、传入函数名列表的时候,进行了分组操作的 DataFrame 也会报错 """
df.apply(['min', max], axis=1)
# Out[289]: 
#    min  max
# A    1    4
# B    1    4
# B    1    4
# D    1    4
# A    1    4

# 报错:TypeError: unhashable type: 'list'
# df.groupby(df.index).apply([min, 'max'])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章