【问题标题】:Concatenate 2 comma separated values in two columns pandas连接两列熊猫中的 2 个逗号分隔值
【发布时间】:2021-10-13 18:52:01
【问题描述】:

我的数据框如下所示:

Col1    Col2       Col3     Col4
1,2,3   10,11,12    ABC     A1B1
4       13          DEF     TEST
5,6     14,15       XYZ     C1D1

我的输出应该是这样的:(第一个逗号分隔值与另一列中的第一个逗号分隔值一起创建行并将计数作为一列)

Col1    Col2    Col3    Col4    Count
1       10      ABC     A1B1    1
2       11      ABC     A1B1    2
3       12      ABC     A1B1    3
4       13      DEF     TEST    1
5       14      XYZ     C1D1    1
6       15      XYZ     C1D1    2

我曾尝试使用 explode 函数,但它会创建多个不同组合的列行。

编辑: 我试过的代码:

df.Col1 = df.Col1.str.split(',')
df = df.explode('Col1').reset_index(drop=True)

但它创建了 Col1 与其余列的多种组合。

期待帮助。

【问题讨论】:

    标签: python pandas explode comma


    【解决方案1】:

    你可以试试:

    #spliting 'Col1' and 'Col2' column values
    df['Col1']=df['Col1'].str.split(',')
    df['Col2']=df['Col2'].str.split(',')
    df=df.agg(pd.Series.explode)
    #OR
    #df=df.apply(pd.Series.explode)
    #Finally create a count column:
    df['Count']=df.groupby(['Col3','Col4']).cumcount()+1
    #If needed reset the index:
    df=df.reset_index(drop=True)
    

    df 的输出:

        Col1    Col2    Col3    Col4    Count
    0   1       10      ABC     A1B1    1
    0   2       11      ABC     A1B1    2
    0   3       12      ABC     A1B1    3
    1   4       13      DEF     TEST    1
    2   5       14      XYZ     C1D1    1
    2   6       15      XYZ     C1D1    2
    

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 1970-01-01
      • 2022-01-18
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2019-05-28
      相关资源
      最近更新 更多