获取列中列表长度(平均长度、最高长度等)统计信息的最泛泛的方式

2024-09-29 03:30:06 发布

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

我想在一列中获得列表长度的统计数据,例如平均长度、最低、最高、标准偏差等

例如:

import pandas as pd

dfp = pd.DataFrame(
    {'trial_num': [[1, 2, 3, 1, 2, 3], [3,4,6,7], [2,2]],
     'subject': [[11, 2, 2, 2],[2,2,7],[4]]
    }
)
dfp

输出:

    trial_num   subject
0   [1, 2, 3, 1, 2, 3]  [11, 2, 2, 2]
1   [3, 4, 6, 7]    [2, 2, 7]
2   [2, 2]  [4]

因此,对于这个数据帧,我想要trial_numsubject列的统计数据

大概是

trial_num
Average: 4
High: 6
Low: 2
Stdev: 2

我试过的

我试过了

dfp.describe()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-90-8a598dabea30> in <module>()
----> 1 dfp.describe()

6 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/algorithms.py in _value_counts_arraylike(values, dropna)
    748         # TODO: handle uint8
    749         f = getattr(htable, "value_count_{dtype}".format(dtype=ndtype))
--> 750         keys, counts = f(values, dropna)
    751 
    752         mask = isna(values)

pandas/_libs/hashtable_func_helper.pxi in pandas._libs.hashtable.value_count_object()

pandas/_libs/hashtable_func_helper.pxi in pandas._libs.hashtable.value_count_object()

TypeError: unhashable type: 'list'

我能想到的唯一解决方案是使用iterrows计算平均值、高值和低值,然后使用平均值,再次使用iterrows计算stdev


Tags: inpandasvaluecountnumlibs统计数据pd
2条回答

您可以使用str.len获取每行的列表长度。然后您可以使用.describe

s = dfp['trial_num'].str.len()
s.describe()


       trial_num
count        3.0
mean         4.0
std          2.0
min          2.0
25%          3.0
50%          4.0
75%          5.0
max          6.0

您可以使用series.explode或dataframe.explode查找统计信息

dfp['trial_num'].explode().describe()

相关问题 更多 >