python - 从字符串数字列中查找总数
问题描述
我有一个 Dataframe df,它看起来像这样:
col1 col2 col3
A 123 0.1
A 1235 0.2
A 1232 0.2
A 12 0.05
B 23 0.04
B 234 0.065
B 235 0.08
B 2368 0.3
B 2369 0.25
B 23679 0.6
现在从这个df中,我想为每个组计算col2中的每个前缀值将包含多少个数字。例如对于组 AI 想要拥有
col1 col2 new_col
A 123 8
A 1235 1
A 1232 1
A 12 90
B 23 779
B 234 100
B 235 100
B 2368 10
B 2369 10
B 23679 1
再多一点 123 将包含以下一组数字: (1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239) 但 1232 和 1235 存在于不同的 df 行中,因此 10-2 = 8个数字。12 也一样。它将包含 1200 到 1299 之间的所有 100 个数字 - 不同行中的 10 个给定数字,因此是 90。
到目前为止,我遵循的逻辑如下: - 创建一个 col2 长度的列。- 找到每组的最大字符长度
df['prefix_length'] = df['col2'].str.len()
df['max_length'] = df.groupby('col1')['col2'].transform(max)
df['total_numbers'] = 10 ** (df['max_length'] - df['prefix_length'])
数据框未排序,我有很多组。在 col2 中,所有字符串数字都以相同的最小长度前缀开头。任何帮助表示赞赏:)
解决方案
推荐阅读
- javascript - unable to change the input background based on condition
- swift - 如何使用 Decodable 解析 json?
- jquery - FullCalendar 中的更新日期
- gatsby - Can't create new Gatsby project
- ios - 用户照片库中的图像可以从第三方应用程序移至隐藏文件夹吗?
- optimization - Optimization of conditional Fortran loop
- laravel - 像画廊第一张那样的横向照片
- sql-server - Delete sql rows with fk in another table
- message-hub - Message Hub & Confluent Kafka Connect S3
- ios - Crashlytics 上传 ipa 文件不会上传 DSYM 文件