获取熊猫数据框列表条目中的数字条目

Posted

技术标签:

【中文标题】获取熊猫数据框列表条目中的数字条目【英文标题】:Get the number entries in a list entry of a pandas dataframe 【发布时间】:2019-05-14 07:44:15 【问题描述】:

我有一个包含各种列的 pandas 数据框,其中一个是我使用 split 命令拆分为列表的字符串:

    import Pandas as pd

    csvRead = pd.read_csv('../data/Data.csv')
    df = pd.DataFrame(csvRead)

    df['split_string'] = df['string'].str.split(r'[ ]')

    idx = 0
    for i in df['split_string']:
        df['split_string_counts'][idf] = len(i)
        i += 1

现在我想对 for 语句进行矢量化处理,因为 Pandas.Series pacakge 中没有标准命令可以计算 split 命令给出的列表的元素数。数据帧 df 有超过 200 万个条目,因此 for 非常低效。

【问题讨论】:

欢迎来到 ***。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。 向我们展示一个数据框 【参考方案1】:

不幸的是,这里矢量化是不可能的,但如果没有缺失值,您可以使用列表推导:

#DataFrame constructor is not necessary, because read_csv return DataFrame
df = pd.read_csv('../data/Data.csv')

df['split_string'] = [x.split() for x in df['string']]
df['split_string_counts'] = [len(x) for x in df['split_string']]

如果可能的缺失值使用splitlen

df['split_string'] = df['string'].str.split()
df['split_string_counts'] = df['split_string'].str.len()

【讨论】:

谢谢! df['split_string_counts'] = df['split_string'].str.len() 工作! @rjc - 超级,很高兴能帮上忙!【参考方案2】:

可以通过访问系列底层.values来完成:

import numpy as np

mylen = np.vectorize(len)
df['split_string_counts'] = mylen(df['split_string'].values)

但是this answer 上的 cmets 表明它不会比 jezrael 建议的列表推导更快。

【讨论】:

以上是关于获取熊猫数据框列表条目中的数字条目的主要内容,如果未能解决你的问题,请参考以下文章

如何更新用户表单中的条目?

带有逗号分隔的字符串条目的熊猫数据框,更改为唯一的逗号分隔的条目

是否可以在列表框中的一行中添加多个条目?

拆分(分解)熊猫数据框字符串条目以分隔行

将包含列表的列拆分为熊猫中的不同行[重复]

如何自动展开到组合框中的重复条目?