python - 如何根据某些条件连接熊猫列中的两个单元格?
问题描述
你好我有这个熊猫数据框:
Key Predictions
C10D1 1
C11D1 8
C11D2 2
C12D1 2
C12D2 8
C13D1 3
C13D2 9
C14D1 4
C14D2 9
C15D1 8
C15D2 3
C1D1 5
C2D1 7
C3D1 4
C4D1 1
C4D2 9
C5D1 3
C5D2 2
C6D1 1
C6D2 0
C7D1 8
C7D2 6
C8D1 3
C8D2 3
C9D1 5
C9D2 1
我想连接“预测”列中的每个单元格,其中“键”最多匹配 4 个字符。例如......在“Key”列中,我有“C11D1”和“C11D2”......因为它们都包含“C11”,所以我想连接以“C11D1”和“C11D2”为索引的预测列中的行。 . 因此结果应该是:
Predictions
Key
C10 1
C11 82
C12 28
and so on
解决方案
编辑:由于 OP 想要连接相同索引的值,因此在此处添加该解决方案。
df.groupby(df['Key'].replace(regex=True,to_replace=r'(C[0-9]+).*',value=r'\1'))\
['Predictions'].apply(lambda x: ','.join(map(str,x)))
以上将它们连接起来,您可以根据您在部分中,
的需要将其设置为空或空格。lambda x: ','
请您尝试以下操作。
df.groupby(df['Key'].replace(regex=True,to_replace=r'(C[0-9]+).*',value=r'\1')).sum()
或重置索引尝试:
df.groupby(df['Key'].replace(regex=True,to_replace=r'(C[0-9]+).*',value=r'\1')).sum()\
.reset_index()
说明:为上述代码添加说明。
df.groupby(df['Key'].replace(regex=True,to_replace=r'(C[0-9]+).*',value=r'\1')).sum()
df.groupby: Means use groupby for df whatever values passed to it.
df['Key'].replace(regex=True,to_replace=r'(C[0-9]+).*',value=r'\1'): Means df's key column I am using regex to replace everything after Cdigits with NULL as per OP's question.
.sum(): Means to get total sum of all similar 1st column as per need.
推荐阅读
- javascript - 循环遍历 JSON 数据以将嵌套数据添加到数组(要添加到 MySQL 数据库表)在缺少值时失败
- java - 无法使用 drools 工作台仪表板构建和部署 jar 文件以将其部署到 kieserver。构建 jar spinner 的过程卡住了
- python - Visual Studio Code 不会打开 .py、.ipynb 文件
- wpf - WPF 应用程序未调用 Prism INavigationAware 方法
- android - xamarin form android自定义渲染器:覆盖两个页面
- c# - Github 中的持续部署操作 asp.net 核心解决方案
- python - Pandas:检查数据框是否存在
- javascript - 即使满足条件,这也不会返回“if”语句
- android - 无法使用 Hilt 注入 workmanager 构造函数
- typescript - 为我的项目扩展 lodash 类型(@types/lodash),使用“first”方法的接口