我有一个带有不同列的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效率很低。
答案 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']]
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建议的列表理解要快。