将Pandas系列从groupby结果转换为numpy数组或列表

2024-09-27 07:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,如下所示:

data = 
   grouping  cols1
       1     10
       1      5
       2     30
       2     10
       3     35

我进行了分组操作:

df = data.groupby('grouping')['cols1'].apply(lambda x: np.where(np.sum(x)>0, np.sum(x),0))

grouping
1                    25
2                    40
3                    35
Name: cols1, dtype: object

我想将df(从groupby操作)转换为numpy数组,或将结果列为:

array([25,40,35])

[25,40,35]

我试过:df.to_numpy()和df.tolist()。但结果不正确,如下所示:

array([array(25), array(40), array(35)], dtype=object)

[array(25),
 array(40),
 array(35)]

有办法解决这个问题吗


Tags: 数据lambdanumpydfdataobjectnpwhere
2条回答
np.array(df["<column_name>"].values)

应该输出所需的数组

您可以尝试使用列表理解:

# Create your input series
s = pd.Series([np.array(25), np.array(40), np.array(35)], index=[1,2,3], name='cols1')
[i.tolist() for i in s]

输出:

[25, 40, 35]

注意:我想看看你用来生成这个pd.Series的代码。我怀疑,我们可能能够在代码中避免这个问题


s.map(lambda x: x.tolist()).to_numpy()

输出:

array([25, 40, 35], dtype=int64)

相关问题 更多 >

    热门问题