Python根据表列中逗号分隔的值编写新行

2024-10-05 10:17:04 发布

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

我有一个样本数据集:

column1 column2 column3     column4                       column5 
  a       b        c       paddy, jimmy, john     [242352, 2351235, 65436324]
  a       z        c       james, jill, jillian   [325134, 63464374568, 43574578654]
  s       t        y       patsy                      [463465573452]

我想用逗号分隔“column4”和“column5”。所以每列4和5只有一个值。剩下的部分会重复。在

生成的数据帧示例:

^{pr2}$

欢迎任何解决方案。我已经看过以前关于堆栈溢出的类似问题,但是因为我有浮点值,所以给出的解决方案对我不起作用。在


Tags: 数据解决方案john样本jimmycolumn1jamescolumn2
1条回答
网友
1楼 · 发布于 2024-10-05 10:17:04

使用^{}^{}重复行。在

然后使用^{}只从col5^{}中提取数字,^{}扩展{}和{}

# Reindex and repeat cols on len of split and reset index
df1 = df.reindex(df.index.repeat(df['column4'].fillna("").str.split(',').apply(len)))
df1 = df1.drop(['column4','column5'],1)

# Splitting both cols
s = df['column4'].str.split(',', expand=True).stack().reset_index(level=1,drop=True)
s1 = df['column5'].str.extractall('(\d+)').reset_index(level=1,drop=True)[0]

# Now grouping the series and df using cumcount.
df1 = df1.set_index(df1.groupby(df1.index).cumcount(), append=True)
s = s.to_frame('column4').set_index(s.groupby(s.index).cumcount(), append=True)
s1 = s1.to_frame('column5').set_index(s1.groupby(s1.index).cumcount(), append=True)

# Joining the all of them together and reset index.
df1 = df1.join(s, how='outer').join(s1,how='outer').reset_index(level=[0,1],drop=True)

print (df1)

输出:

^{pr2}$

相关问题 更多 >

    热门问题