pandas实现一行拆分成多行

目录
  • 一行拆分成多行
    • 1.根据某一列拆分
    • 2.根据多列拆分
  • 一行转多行、多行转一行
    • 1.测试数据
    • 2.一行转多行
    • 3.多行转一行

一行拆分成多行

1.根据某一列拆分

效果:

代码:

if __name__ == '__main__':
    import pandas as pd
    df = pd.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'],
                       'Number': [100, 150, 120, 90],
                       'Value': [1, 2, 3, 4],
                       'label': list('abcd')})
    df_split_row = df.drop('Country', axis=1).join(
        df['Country'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))

2.根据多列拆分

效果:

代码:

if __name__ == '__main__':
    import pandas as pd
    df = pd.DataFrame({'Code': ['212027'],
                       'Color': ['blue, pink, yellow'],
                       'Size': ['12-18M, 2-3Y, 3-4Y']})
    split_columns = ['Color', 'Size']
    df_convert = df.drop(columns=split_columns, axis=1)
    for column in split_columns:
        df_convert = df_convert.join(
            df[column].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename(column))
    df_convert = df_convert.reset_index(drop=True)

一行转多行、多行转一行

1.测试数据

df = pd.DataFrame([['张世龙', '篮球、羽毛球、英雄联盟'],
                   ['黄邵飞', '兵乓球、足球、下棋'],
                   ['刘苗苗', '绘画、写小说、跑步']])
df.columns = ['姓名','爱好']

2.一行转多行

方法一:

# 1、把渠道字段拆分,分为多列; 2、把行转列成列;3、重置索引,并删除多于的索引;4、更改名称
df_ = df['爱好'].str.split('、',expand=True).stack().reset_index(level=1,drop=True).rename('爱好')
df1 = df.drop(['爱好'], axis=1).join(df_)

方发二:

# 1、将渠道字段拆分;2、调用explode()方法
df['爱好'] = df['爱好'].map(lambda x:x.split('、'))
df1 = df.explode('爱好')

3.多行转一行

#定义拼接函数,并对字段进行去重
def concat_func(x):
    return pd.Series({
        '爱好':'、'.join(x['爱好'].unique())
    })
#分组聚合 + 拼接
df2 = df1.groupby(df1['姓名']).apply(concat_func).reset_index()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pandas将list数据拆分成行或列的实现

    数据 import numpy as np import pandas as pd data = [{'Name': '小明', 'Chinese': [70, 80], 'Math': [90, 80]}, {'Name': '小红', 'Chinese': [70, 80, 90], 'Math': [90, 80, 70]}] data = pd.DataFrame(data) data 拆分成行 def split_row(data, column): '''拆分成行 :param da

  • Python DataFrame一列拆成多列以及一行拆成多行

    摘要 在进行数据分析时,我们经常需要把DataFrame的一列拆成多列或者根据某列把一行拆成多行,这篇文章主要讲解这两个目标的实现. 1.读取数据 2.将City列转成多列(以'|'为分隔符) 这里使用匿名函数lambda来讲City列拆成两列. 3.将DataFrame一行拆成多行(以'|'为分隔符) 方法一:在刚刚得到的DataFrame基础上操作,如下图所以,可以明显看到我们按照City列将DataFrame拆成了多行.主要是先将DataFrame拆成多列,然后拆成多个DataFrame再

  • Python Pandas list列表数据列拆分成多行的方法实现

    1.实现的效果 示例代码: df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]}) df Out[458]: A B 0 1 [1, 2] 1 2 [1, 2] 拆分成多行的效果: A  B 0  1  1 1  1  2 3  2  1 4  2  2 2.拆分成多行的方法 1)通过apply和pd.Series实现 容易理解,但在性能方面不推荐. df.set_index('A').B.apply(pd.Series).stack().reset_ind

  • Python中实现一行拆多行和多行并一行的示例代码

    粉丝提问 今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用power query已经解决了.但是基于Python怎么做呢?接着往下看. 一行拆多行 上面这个问题我会提供两个思路,供大家选择,当然肯定是越简单得越好.每一种方法中都有一些好用的技巧,希望大家能够好好学习. 1)方法一 下方代码中有很多重要的知识点,需要我们下去好好学习一下,我这里只提供解体思路,关于每个知识点怎么用,希望大家下去自行研究学习. Pandas.m

  • pandas实现一行拆分成多行

    目录 一行拆分成多行 1.根据某一列拆分 2.根据多列拆分 一行转多行.多行转一行 1.测试数据 2.一行转多行 3.多行转一行 一行拆分成多行 1.根据某一列拆分 效果: 代码: if __name__ == '__main__': import pandas as pd df = pd.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'], 'Number': [100,

  • mysql根据逗号将一行数据拆分成多行数据

    目录 分隔效果 命令行解释 涉及函数 分隔效果 -- 分隔前 1,2,3,4 -- 分隔后 1 2 3 4 分隔命令行 SELECT substring_index(substring_index('1,2,3,4',',', b.help_topic_id + 1), ',', -1) result FROM mysql.help_topic b where b.help_topic_id < (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ','

  • Oracle根据逗号拆分字段内容转成多行的函数说明

    目录 使用场景 1.业务表A 2.实现拆分SQL 3.REGEXP_SUBSTR函数 1)参数说明 2)案例 4.REGEXP_REPLACE函数 1)参数说明 5.CONNECT BY函数 1)基本语法 2)案例 6.LENGTH函数 1)参数说明 2)案例 总结 使用场景 业务表A中一个字段存放用逗号分割的多个业务单元,现在需要将数据转成一个业务单元对应一个数据. 1.业务表A SELECT * FROM app_template_dept t WHERE t.evaluate_index_

  • pandas数据处理基础之筛选指定行或者指定列的数据

    pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 1.重新索引:reindex和ix 上一篇中介绍过数据读取后默认的行索引是0,1,2,3...这样的顺序号.列索引相当于字段名(即第一行数据),这里重新索引意思就是可以将默认的索引重新修改成自己想要的样子. 1.1 Series 比方说:data=Series([4,5,6],index=['a',

  • 利用python Pandas实现批量拆分Excel与合并Excel

    一.实例演示 1.将一个大Excel等份拆成多个Excel 2.将多个小Excel合并成一个大Excel并标记来源 work_dir="./course_datas/c15_excel_split_merge" splits_dir=f"{work_dir}/splits" import os if not os.path.exists(splits_dir): os.mkdir(splits_dir) 二.读取源Excel到Pandas import pandas

  • Pandas实现批量拆分与合并Excel的示例代码

    目录 前言 一.拆分成小表格 二.合并excel 1.介绍 2.代码 前言 提示:这里可以添加本文要记录的大概内容: 将一个EXCEL等份拆成多个EXCEL 将多个小EXCEL合并成一个大EXCEL并标记来源 提示:以下是本篇文章正文内容,下面案例可供参考 一.拆分成小表格 代码如下(示例): import pandas as pd import os work_dir=r"G:\360Downloads\myself\zuoye\合并拆分" splits_dir=f"{wo

  • Python编程把二叉树打印成多行代码

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 思路: 1.把每层节点的val值用list存好 2.把每层节点存好: ①计算当层节点的个数,这样就保证下一步每层的结点都被pop光 ②然后依次弹出从左到右的每个节点,然后在list中加入该节点对应的左结点.右节点(如果存在的话) 代码如下: class TreeNode(): def __init__(self,x): self.val = x self.left = None self.right = None def

  • 用pandas中的DataFrame时选取行或列的方法

    如下所示: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类型 data.w #选择表格

随机推荐