【问题标题】:how to concatenate two cells in a pandas column based on some conditions?如何根据某些条件连接熊猫列中的两个单元格?
【发布时间】:2020-03-20 01:54:54
【问题描述】:

您好,我有这个 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

【问题讨论】:

    标签: python pandas data-science data-analysis


    【解决方案1】:

    编辑:由于 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()
    

    OR 重置索引尝试:

    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.
    

    【讨论】:

    • 兄弟谢谢你我明白了..有一个问题,我想连接行而不是添加它们..看看我是否有“1”和“2”结果应该是“12”而不是“3”
    • @SabbirTalukdar,现在试试我的编辑代码然后让我知道吗?
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2021-06-07
    • 2021-08-01
    • 2015-03-17
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多