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

时间:2018-12-13 06:15:58

标签: pandas list series

我有一个带有不同列的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效率很低。

2 个答案:

答案 0 :(得分:0)

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

#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()

答案 1 :(得分:0)

可以通过访问该系列的基础.values来完成:

import numpy as np

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

但是对this answer的评论表明它不会比jezrael建议的列表理解要快。