最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn)

 更新時(shí)間:2020年12月13日 14:40:54   作者:XerCis  
這篇文章主要介紹了pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)據(jù)

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 data: 原始數(shù)據(jù)
  :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')

拆分成列

在這里插入圖片描述

from copy import deepcopy


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

  :param data: 原始數(shù)據(jù)
  :param column: 拆分的列名
  :type data: pandas.core.frame.DataFrame
  :type column: str
  '''
  data = deepcopy(data)
  max_len = max(list(map(len, data[column].values))) # 最大長(zhǎng)度
  new_col = data[column].apply(lambda x: x + [None]*(max_len - len(x))) # 補(bǔ)空值,None可換成np.nan
  new_col = np.array(new_col.tolist()).T # 轉(zhuǎn)置
  for i, j in enumerate(new_col):
    data[column + str(i)] = j
  return data


split_col(data, column='Chinese')

其他情況

 1. 批量處理+不要原列

在這里插入圖片描述

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

  :param data: 原始數(shù)據(jù)
  :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))) # 最大長(zhǎng)度
    new_col = new_col.apply(lambda x: x + [None]*(max_len - len(x))) # 補(bǔ)空值,None可換成np.nan
    new_col = np.array(new_col.tolist()).T # 轉(zhuǎn)置
    for i, j in enumerate(new_col):
      data[c + str(i)] = j


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

2. 帶int和list數(shù)據(jù)

在這里插入圖片描述

轉(zhuǎn)成這樣:

在這里插入圖片描述

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: 原始數(shù)據(jù)
  :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))) # 最大長(zhǎng)度
    new_col = new_col.apply(lambda x: x+[None]*(max_len - len(x)) if isinstance(x, list) else [x]+[None]*(max_len - 1)) # 補(bǔ)空值,None可換成np.nan
    new_col = np.array(new_col.tolist()).T # 轉(zhuǎn)置
    for i, j in enumerate(new_col):
      data[c + str(i)] = j


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

參考文獻(xiàn)

 Python Pandas list(列表)數(shù)據(jù)列拆分成多行的方法

10分鐘了解Pandas基礎(chǔ)知識(shí)

到此這篇關(guān)于pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pandas list數(shù)據(jù)拆分內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

安宁市| 广德县| 祁连县| 铜山县| 安西县| 滁州市| 荆门市| 大悟县| 资兴市| 司法| 阜新| 谢通门县| 襄垣县| 大同县| 扎鲁特旗| 白河县| 太仓市| 承德县| 广州市| 南雄市| 南投县| 北流市| 蓬莱市| 广汉市| 七台河市| 梁平县| 嵩明县| 象山县| 三都| 沙洋县| 台南县| 辛集市| 商水县| 公主岭市| 枝江市| 临湘市| 博兴县| 泽库县| 石河子市| 柳江县| 娄底市|