python Pandas : list of sublist: total items number

标签 python pandas

我有一个这样的列表:

categories_list = [
    ['a', array([ 12994, 1262824, 145854,  92469]),
     'b', array([273300]),
     'c', array([341395, 32857711])],
    ['a', array([ 356424311,  165573412, 2032850784]),
     'b', array([2848105, 228835]),
     'c', array([])],
    ['a', array([1431689, 30655043, 1739919]),
     'b', array([597, 251911, 246600]),
     'c', array([35590])]
]

其中每个数组属于前面的字母。 示例:a -> array([ 12994, 1262824, 145854, 92469]), b -> array([273300]), 'a' -> array([1431689, 30655043, 1739919]) and so on...

那么,是否可以检索每个字母的总项目数? 需求:

----------
a      10
b       6
c       3

欢迎提出建议

最佳答案

pd.DataFrame(
    [dict(zip(x[::2], [len(y) for y in x[1::2]])) for x in categories_list]
).sum()

a    10
b     6
c     3
dtype: int64
<小时/>
  • 我的目标是创建一个字典列表。所以我必须用字典填充 ...... 来解析每个子列表

    [ ...... for x in catgories_list]
    
  • 如果我在元组的列表或生成器上使用dict,它会神奇地将其转换为字典,其中键作为元组中的第一个值,并且值作为元组中的第二个值。

    dict(...list of tuples...)
    
  • zip 将为我提供 元组

    的生成器
    zip(list one, list two)
    
  • 我知道在每个子列表中,我的键位于偶数索引 [0, 2, 4...] ,值位于奇数索引 [ 1, 3, 5, ...]

    #   even    odd
    zip(x[::2], x[1::2])
    
  • 但是x[1::2]将是数组,而我不需要数组。我想要数组的长度。

    #   even                     odd
    zip(x[::2], [len(y) for y in x[1::2]])
    
  • pandas.DataFrame 将获取字典列表并创建一个数据框。

  • 最后,使用sum来计算长度。

关于 python Pandas : list of sublist: total items number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357722/

相关文章:

python - 为什么 `pandas.read_csv` 不是 `pandas.DataFrame.to_csv` 的倒数?

python - 如何逐步消除python列表中的项目?

python - Django allauth - 没有社交用户的验证电子邮件

python - 如何使用 pandas 数据帧的正则表达式仅提取一个捕获组?

python - 将 Pandas DataFrame 转换为 JSON

python - 在 Pandas `TimeStamp` 中将 `DataFrame` 列截断为小时精度

python - pandas multiindex 按行重新索引

python - dtype=datetime64[ns] 和日期之间的比较无效

python - 多个从左到右的选择字段

python - 为什么非常简单的 PyTorch LSTM 模型无法学习?