python - 如何根据某些条件连接 pandas 列中的两个单元格?

标签 python pandas data-science data-analysis

你好,我有这个 pandas 数据框:


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: ',' 部分将其设置为 null 或空格。

<小时/> <小时/>

您可以尝试以下操作吗?

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.

关于python - 如何根据某些条件连接 pandas 列中的两个单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020566/

相关文章:

python - 在 Raspberry Pi 上优化 Python 合成器

python - Django 模板 : Passing a variable from an include, 进入点符号路径

python - Pandas - 不同字符串之间的比较始终返回 True

python - (Python) 马尔可夫、切比雪夫、切尔诺夫上界函数

python - 使用用户的个人数据计算相似度?

python - 计算加泰罗尼亚数字

python - 使用 Pandas 查询按部分字符串选择行

python - 将 Timeseries 的索引从 datetime64[ns] 转换为 datetime64[s] 而不会丢失信息

python - 使用 Pandas 和情节的相关性

performance - 将 Word2Vec 模型高效引入生产服务