gpt4 book ai didi

Pandas GroupBy 聚合不保留数据类型

转载 作者:行者123 更新时间:2023-12-05 04:51:58 25 4
gpt4 key购买 nike

我通过使用 summax 等函数来使用 Pandas GroupByGroupby.agg >min 用于我的数字列,但我注意到我之前对我的列施加的数据类型(例如 np.int8、np.int16、np.int32)在 GroupBy 聚合之后没有保留,实际上每一列转为 int64。 Pandas 版本 1.1.5

我目前的解决方案是在完成 groupby 聚合后重新向下转换,这是一个已知问题和/或是否有更好的解决方案?

最佳答案

在 pandas 版本 1.1.5 上测试

我没有得到相同的结果。类型是守恒的。

import pandas as pd
import numpy as np

df = pd.DataFrame(dict(a=[1,2,3,4,5], b=[1,2,3,4,5], c=[1,2,3,4,5]))
df = df.astype({'a': np.int8, 'b': np.int16, 'c': np.int32})
new_df = df.groupby(by='c').max()
print(new_df.dtypes)

""" Output - dtypes are conserved.
a int8
b int16
dtype: object
"""

也许您使用了一个通过多个列的聚合器。如果你要聚合 a + b => 你会得到 int16

new_df = df.groupby(by='c').apply(lambda x: x['a'] + x['b'])
print(new_df.dtypes)
# Output : int16

关于Pandas GroupBy 聚合不保留数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66645100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com