在两列中连接两个逗号分隔的值

2024-09-29 04:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框如下所示:

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与其余列的多个组合

期待您的帮助


Tags: 数据testdfdefcol2col3col1计数
1条回答
网友
1楼 · 发布于 2024-09-29 04:27:08

您可以尝试:

#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

相关问题 更多 >