python - 在 pandas 中展平一个系列,即一个元素为列表的系列

标签 python python-3.x pandas series

我有一系列的表格:

s = Series([['a','a','b'],['b','b','c','d'],[],['a','b','e']])

看起来像

0       [a, a, b]
1    [b, b, c, d]
2              []
3       [a, b, e]
dtype: object

我想数一数我总共有多少个元素。 我天真的尝试像

s.values.hist()

s.values.flatten()

没用。 我做错了什么?

最佳答案

如果我们像最初的问题一样坚持使用 pandas 系列,那么从 Pandas 版本 0.25.0 开始,一个巧妙的选择是 Series.explode()。常规。它向行返回一个分解列表,其中将为这些行复制索引。

问题的原始系列:

s = pd.Series([['a','a','b'],['b','b','c','d'],[],['a','b','e']])

让我们分解它,我们得到一个序列,其中索引是重复的。索引表示原始列表的索引。

>>> s.explode()
Out:
0      a
0      a
0      b
1      b
1      b
1      c
1      d
2    NaN
3      a
3      b
3      e
dtype: object

>>> type(s.explode())
Out:
pandas.core.series.Series

要计算我们现在可以使用 Series.value_counts() 的元素数量:

>>> s.explode().value_counts()
Out:
b    4
a    3
d    1
c    1
e    1
dtype: int64

也包括 NaN 值:

>>> s.explode().value_counts(dropna=False)
Out:
b      4
a      3
d      1
c      1
e      1
NaN    1
dtype: int64

最后,使用 Series.plot() 绘制直方图:

>>> s.explode().value_counts(dropna=False).plot(kind = 'bar')

Histogram of the Series

关于python - 在 pandas 中展平一个系列,即一个元素为列表的系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027723/

相关文章:

python - Mechanicalize 响应不返回任何内容

python - 给定两个列表,没有得到创建元组列表的正确输出

python - 如何使查询 sql 数据库的 python 脚本更加内存有效?

python - 查找字符串中相同相邻字符的数量

python - 如何根据公式从单行创建多行?

python - 标签对连续的多个分类值进行编码

python - 如何使用按钮将sqlite Flask后端的数据显示到前端?

Python多重继承中的错误 "TypeError: could not convert X to Y"

python - 通过 Python 和 Pandas 进行数据透视

python - Pandas DataFrame 货币转换