区块链技术博客
www.b2bchain.cn

创建数据框结构 – python程序员分享

本文介绍了创建数据框结构 – python程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我有一个这样的数据框:

id|c1|c2|c3|c4... 0|s:1,g:B,r:2|s:2,g:A,r:3|s:1,g:C,r:4|s:3,g:D,r:2..... 1|NaN|s:2;g:E,r:4|s:3;g:C,r:3|s:3;g:F,r:3..... 

我想像这样重新排列数据框:

id|c|s|g|r 0|c1|1|B|2 0|c2|2|A|3 0|c3|1|C|4 0|c4|3|D|2 1|c1|NaN|NaN|NaN 1|c2|2|E|4 1|c3|3|C|3 1|c4|3|F|3 

我尝试了以下方法:

df.melt() 

参考方案

DataFrame.set_indexDataFrame.stack重塑想法,用空列名s,g,r替换缺失值,然后用Series.str.split;替换,,再次重塑,然后用:分割,最后用:

df1 = (df.set_index('id')          .fillna('s,g,r')          .stack()          .str.split(',|;', expand=True)          .stack()          .str.split(':', expand=True)          .reset_index(level=2, drop=True)          .set_index(0, append=True)[1]          .unstack()          .rename_axis(('id','c'))          .rename_axis(None, axis=1)          .reset_index()          ) print (df1)    id   c     g     r     s 0   0  c1     B     2     1 1   0  c2     A     3     2 2   0  c3     C     4     1 3   0  c4     D     2     3 4   1  c1  None  None  None 5   1  c2     E     4     2 6   1  c3     C     3     3 7   1  c4     F     3     3 

编辑:第一步是通过索引Series.unstackstack重塑形状:

print (df.set_index('id')          .fillna('s,g,r')          .stack()) id     0   c1    s:1,g:B,r:2     c2    s:2,g:A,r:3     c3    s:1,g:C,r:4     c4    s:3,g:D,r:2 1   c1          s,g,r     c2    s:2;g:E,r:4     c3    s:3;g:C,r:3     c4    s:3;g:F,r:3 dtype: object 

下一步是用分隔符吐出,然后再次用id重塑形状:

print (df.set_index('id')          .fillna('s,g,r')          .stack()          .str.split(',|;', expand=True)          .stack()) id        0   c1  0    s:1         1    g:B         2    r:2     c2  0    s:2         1    g:A         2    r:3     c3  0    s:1         1    g:C         2    r:4     c4  0    s:3         1    g:D         2    r:2 1   c1  0      s         1      g         2      r     c2  0    s:2         1    g:E         2    r:4     c3  0    s:3         1    g:C         2    r:3     c4  0    s:3         1    g:F         2    r:3 dtype: object 

然后按stack分成2列,并将第一列转换为:的最后一级:

print (df.set_index('id')          .fillna('s,g,r')          .stack()          .str.split(',|;', expand=True)          .stack()          .str.split(':', expand=True)          .reset_index(level=2, drop=True)          .set_index(0, append=True)[1]) id      0 0   c1  s       1         g       B         r       2     c2  s       2         g       A         r       3     c3  s       1         g       C         r       4     c4  s       3         g       D         r       2 1   c1  s    None         g    None         r    None     c2  s       2         g       E         r       4     c3  s       3         g       C         r       3     c4  s       3         g       F         r       3 

上次通过MultiIndex重塑:

print (df.set_index('id')          .fillna('s,g,r')          .stack()          .str.split(',|;', expand=True)          .stack()          .str.split(':', expand=True)          .reset_index(level=2, drop=True)          .set_index(0, append=True)[1]          .unstack()) 0         g     r     s id                      0  c1     B     2     1    c2     A     3     2    c3     C     4     1    c4     D     2     3 1  c1  None  None  None    c2     E     4     2    c3     C     3     3    c4     F     3     3 

R'relaimpo'软件包的Python端口 – python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

如何用'-'解析字符串到节点js本地脚本? – python

我正在使用本地节点js脚本来处理字符串。我陷入了将’-‘字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…

Python:传递记录器是个好主意吗? – python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python-Excel导出 – python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Matplotlib'粗体'字体 – python

跟随this example:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label in enumerate(('A', 'B', 'C', 'D')): ax = f…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 创建数据框结构 – python程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们