本文介绍了创建数据框结构 – 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_index
用DataFrame.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.unstack
的stack
重塑形状:
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…
最新评论