美文网首页
将数据集中一个CELL拆成多行或反过来

将数据集中一个CELL拆成多行或反过来

作者: 咸鱼426 | 来源:发表于2019-11-23 15:49 被阅读0次

一、将一个CELL的一行转成多行

在做数据清洗时,有时会遇到一个cell中是很多个逗号隔开的数据,也就是一对多的情况,而我们需要将其转为每一行是一对一的格式,这时可用itertools中的chain函数:

import numpy as np
import pandas as pd
from itertools import chain
df = pd.DataDrame({'column 1':[ 'og1', 'or2','or3'],
                                 'column 2':['1,2,3,4', '2,3,4,5', '5,3,2,1']})
# 将逗号隔开的string转成list
def chainer(s):
    return list(chain.from_iterable(s.str.split(',')))
# 计算list 长度
lens = df['column 2'].str.split(',').map(len)

new_df = pd.DataFrame({'column 1':np.repeat(df['column 1'], lens),
                       'column 2':chainer(df['column 2'])})

二、将多行合成一行

df = new_df.groupby('column 1')['column 2'].apply(lambda x:', '.join(x.astype(str))).reset_index()

参考:

https://stackoverflow.com

相关文章

网友评论

      本文标题:将数据集中一个CELL拆成多行或反过来

      本文链接:https://www.haomeiwen.com/subject/uzehwctx.html