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


Posted in Python onDecember 13, 2020

数据

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

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

拆分成行

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

def split_row(data, column):
  '''拆分成行

  :param data: 原始数据
  :param column: 拆分的列名
  :type data: pandas.core.frame.DataFrame
  :type column: str
  '''
  row_len = list(map(len, data[column].values))
  rows = []
  for i in data.columns:
    if i == column:
      row = np.concatenate(data[i].values)
    else:
      row = np.repeat(data[i].values, row_len)
    rows.append(row)
  return pd.DataFrame(np.dstack(tuple(rows))[0], columns=data.columns)


split_row(data, column='Chinese')

拆分成列

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

from copy import deepcopy


def split_col(data, column):
  '''拆分成列

  :param data: 原始数据
  :param column: 拆分的列名
  :type data: pandas.core.frame.DataFrame
  :type column: str
  '''
  data = deepcopy(data)
  max_len = max(list(map(len, data[column].values))) # 最大长度
  new_col = data[column].apply(lambda x: x + [None]*(max_len - len(x))) # 补空值,None可换成np.nan
  new_col = np.array(new_col.tolist()).T # 转置
  for i, j in enumerate(new_col):
    data[column + str(i)] = j
  return data


split_col(data, column='Chinese')

其他情况

 1. 批量处理+不要原列

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

def split_col(data, columns):
  '''拆分成列

  :param data: 原始数据
  :param columns: 拆分的列名
  :type data: pandas.core.frame.DataFrame
  :type columns: list
  '''
  for c in columns:
    new_col = data.pop(c)
    max_len = max(list(map(len, new_col.values))) # 最大长度
    new_col = new_col.apply(lambda x: x + [None]*(max_len - len(x))) # 补空值,None可换成np.nan
    new_col = np.array(new_col.tolist()).T # 转置
    for i, j in enumerate(new_col):
      data[c + str(i)] = j


split_col(data, columns=['Chinese','Math'])
data

2. 带int和list数据

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

转成这样:

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

import numpy as np
import pandas as pd

data = [{'Name': '小爱', 'Chinese': 70, 'Math': 90},
    {'Name': '小明', 'Chinese': [70, 80], 'Math': [90, 80]},
    {'Name': '小红', 'Chinese': [70, 80, 90], 'Math': [90, 80, 70]}]
data = pd.DataFrame(data)

def split_col(data, columns):
  '''拆分成列

  :param data: 原始数据
  :param columns: 拆分的列名
  :type data: pandas.core.frame.DataFrame
  :type columns: list
  '''
  for c in columns:
    new_col = data.pop(c)
    max_len = max(list(map(lambda x:len(x) if isinstance(x, list) else 1, new_col.values))) # 最大长度
    new_col = new_col.apply(lambda x: x+[None]*(max_len - len(x)) if isinstance(x, list) else [x]+[None]*(max_len - 1)) # 补空值,None可换成np.nan
    new_col = np.array(new_col.tolist()).T # 转置
    for i, j in enumerate(new_col):
      data[c + str(i)] = j


split_col(data, columns=['Chinese','Math'])
data

参考文献

 Python Pandas list(列表)数据列拆分成多行的方法

10分钟了解Pandas基础知识

到此这篇关于pandas将list数据拆分成行或列的实现的文章就介绍到这了,更多相关pandas list数据拆分内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中sys.argv参数用法实例分析
May 20 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
遗传算法之Python实现代码
Oct 10 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
基于pip install django失败时的解决方法
Jun 12 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
django使用LDAP验证的方法示例
Dec 10 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Django框架反向解析操作详解
Nov 28 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 #Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 #Python
pandas抽取行列数据的几种方法
Dec 13 #Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 #Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 #Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 #Python
Pandas DataFrame求差集的示例代码
Dec 13 #Python
You might like
桌面中心(四)数据显示
2006/10/09 PHP
php基础知识:控制结构
2006/12/13 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
详解python和matlab的优势与区别
2019/06/28 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python如何安装第三方模块
2020/05/28 Python
Python-for循环的内部机制
2020/06/12 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
自我评价正确写法范文
2013/12/10 职场文书
中层干部岗位职责
2013/12/18 职场文书
商务考察邀请函范文
2014/01/21 职场文书
运动会致辞稿50字
2014/02/04 职场文书
赡养老人协议书
2014/04/21 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
个人授权委托书模板
2014/09/14 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
Python List remove()实例用法详解
2021/08/02 Python
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL