我是python的新手&;熊猫,你能告诉我是否有可能解组和解组这样的数据帧吗
源数据中的组位于由前缀空格标记的唯一列中,看起来像
import pandas as pd
import numpy
df = pd.DataFrame([
['Costs', numpy.nan, numpy.nan, numpy.nan],
[' Vehicles', numpy.nan, numpy.nan, numpy.nan],
[' Cars', numpy.nan, numpy.nan, numpy.nan],
[' BMW', 1000, 1100, 1010],
[' Toyota', 1203, 1302, 1322],
[' Cars - Total', 2203, 2402, 2332],
[' Trucks', numpy.nan, numpy.nan, numpy.nan],
[' Volvo', 5000, 5001, 5010],
[' MAN', 5500, 5055, 5066],
[' Trucks - Total', 10500, 10056, 10076],
[' Vehicles - Total', 12703, 12458, 12408],
[' Crew', numpy.nan, numpy.nan, numpy.nan],
[' Gomez Addams', 10000, 10000, 10000],
[' Morticia Addams', 10000, 10000, 10000],
[' Crew - Total', 20000, 20000, 20000],
['Costs - Total', 32703, 32458, 32408],
],
columns=['Level', 'Q1_2019', 'Q2_2019', 'Q3_2019'])
我需要把它转换成一张像
Level, Sublevel1, Sublevel2, Sublevel3, Sublevel4, Date, Value
"Costs", "Vehicles", "Cars", "BMW", "Q1_2019", 1000
"Costs", "Crew", "Gomez Addams", , "Q1_2019", 10000
现在我已经创建了额外的“子级别”列,用正则表达式回填它们,然后逐行填充子级别间隙,然后应用melt()。能做得更像Python吗
这可能是一种更简洁的方法,但其思想是使用
Total
过滤掉组,然后使用向后和向前填充然后,我们将出现次数少于1次的任何一组中的任何一种都丢弃,并按1-2级融化
相关问题 更多 >
编程相关推荐