pandas - 获取熊猫数据框列表条目中的数字条目
问题描述
我有一个带有各种列的 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 包中没有标准命令可以计算 split 命令给出的列表的元素数。数据框 df 有超过 200 万个条目,因此 for 效率非常低。
解决方案
可以通过访问该系列的底层来完成.values
:
import numpy as np
mylen = np.vectorize(len)
df['split_string_counts'] = mylen(df['split_string'].values)
但是对这个答案的评论表明它不会比 jezrael 建议的列表理解更快。
推荐阅读
- c++ - 文件中的重复文本
- javascript - 发送带有附件的电子邮件“不是功能错误”
- r - R 使用 na.locf() 正确使用 cross() 函数
- python - Python 请求“没有为主机名找到连接适配器://endpont/endpoint
- node.js - 从 Node.js 打开自解压 zip (.exe)
- jenkins - Jenkins 代理节点上的 Jenkins 共享库脚本
- python - 在Python中循环遍历帧像素的更快方法?
- mysql - Delphi - 不支持 ODBC 驱动程序消息不断弹出
- php - 如何从多个表中获取数据
- reactjs - 升级到 WebPack5 并实现 Jest