获取熊猫数据框列表条目中的数字条目
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']]
如果可能的缺失值使用split
和len
:
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 建议的列表推导更快。
【讨论】:
以上是关于获取熊猫数据框列表条目中的数字条目的主要内容,如果未能解决你的问题,请参考以下文章