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

一、将一个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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容