python - 计算熊猫列条目中给出的间隔的平均值
问题描述
我有一列在某些单元格中有深度间隔:
该列看起来像这样
depth
0 0
1 1
2 2
3 0_1
4 1_2
我想知道是否有代码可以用来查找 Pandas 中间隔的单元格的平均值。数据框非常大,手动操作不是明智之举。
非常感谢你的帮助。
解决方案
方法一:
使用拆分depth
列并Series.str.split
从此拆分列创建一个新数据框,dtype=float
并附带:mean
axis=1
df['depth'] = pd.DataFrame([*df['depth'].str.split('_')], dtype='float').mean(1)
方法二:
Series.str.split
使用with 可选参数展开列expand=True
并mean
附带axis=1
:
df['depth'] = df['depth'].str.split('_', expand=True).astype(float).mean(1)
方法三:
遍历depth
列表理解中的每个元素并获取mean
:
df['depth'] = [np.array(s.split('_'), dtype='float').mean() for s in df['depth']]
print(df)
depth
0 0.0
1 1.0
2 2.0
3 0.5
4 1.5
时间:
df.shape
(50000, 1)
%%timeit @Method1
_ = pd.DataFrame([*df['depth'].str.split('_')], dtype='float').mean(1)
55 ms ± 1.25 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit @Method2
_ = df['depth'].str.split('_', expand=True).astype(float).mean(1)
101 ms ± 824 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit @Method3
_ = [np.array(s.split('_'), dtype='float').mean() for s in df['depth']]
690 ms ± 12.7 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
推荐阅读
- python - Razorpay Webhook 签名验证错误
- mysql - mysql SET sql_mode = '' 修复 mysql 5.7 和 mysql 8 中的严格模式错误
- r - 逻辑回归中的分类预测变量;如何解释
- bash - 使用 awk 将大型、复杂的一列文件拆分为多列
- c# - 实体框架在种子数据库上插入重复项
- spring-boot - Spring kafka 事务 id 在开始时是错误的?
- python - django-rest-framework: int() 参数必须是字符串、类似字节的对象或数字,而不是延迟属性
- java - Bouncy Castle PQC XMSS 签名:从 KeyStore 检索 SecretKey 后出现 NullPointerException
- python - 如何比较两个 JSON 文件并在 python 中形成单个 JSON 文件
- angular - 删除 Angular 根元素时会发生什么