将pandas数据从宽格式转换为长格式时,返回零个结果。

3
我可以帮您翻译。需要将一个pandas数据框从宽格式转换为长格式。以下是您尝试进行转换的原始回答:
pd.wide_to_long(df, ['BEV'], i='GCD', j='BEV_age_perc', sep='_')

返回一个包含0个结果的数据框?

如下所示:

  • Id列是:GCD(已包含在索引中)
  • BEV_*应该被重塑为单个列
  • EDU_*同理

数据框示例:

data_dict = {'GCD': {10101: 10101, 10201: 10201, 10301: 10301},
 'GEM_NAME': {10101: 'Eisenstadt',
  10201: 'Rust',
  10301: 'Breitenbrunn am Neusiedler See'},
 'BEV_UNTER15_perc': {10101: 0.0009831950352137229,
  10201: 0.006775210084033614,
  10301: 0.005955463490419472},
 'BEV_UEBER65_perc': {10101: 0.0012830346558817375,
  10201: 0.013340336134453781,
  10301: 0.013257379596064217},
 'AUSL_STAATSB_perc': {10101: 0.0010041140785161426,
  10201: 0.003046218487394958,
  10301: 0.003521491455204557},
 'EWTQ_15BIS64_perc': {10101: 0.004776514887385817,
  10201: 0.03996848739495798,
  10301: 0.03780424650440187},
 'ALQ_15PLUS_perc': {10101: 0.00047416498152151175,
  10201: 0.0021008403361344537,
  10301: 0.0030554117037804246},
 'EDU_15_SEK_perc': {10101: 0.004114078516142528,
  10201: 0.03308823529411765,
  10301: 0.03381667529777317},
 'EDU_15_TER_perc': {10101: 0.001436440973432815,
  10201: 0.004884453781512605,
  10301: 0.006266183324702227},
 'AUSPENDLER_perc': {10101: 0.0030681263510215465,
  10201: 0.03156512605042017,
  10301: 0.04049715173485241},
 'PHH_perc': {10101: 0.4540129698068475,
  10201: 0.42016806722689076,
  10301: 0.4743656136716727},
 'HH_SIZE_perc': {10101: 0.00014782790600376543,
  10201: 0.0012079831932773108,
  10301: 0.0010875194199896428},
 'FAMILIEN_perc': {10101: 0.2707621504776515,
  10201: 0.2935924369747899,
  10301: 0.2988089073019161},
 'UNT_perc': {10101: 0.09113729865420822,
  10201: 0.0976890756302521,
  10301: 0.07767995857068877},
 'AST_perc': {10101: 0.12028449898891291,
  10201: 0.11134453781512606,
  10301: 0.08285862247540135},
 'BESCH_AST_perc': {10101: 1.2270413499755946,
  10201: 0.5057773109243697,
  10301: 0.2687726566545831}}
df = pd.DataFrame(data_dict)
1个回答

3
你需要将默认后缀更改为 。最初的回答。
pd.wide_to_long(df, ['BEV'], i='GCD', j='BEV_age_perc', sep='_',suffix='\w+')

那真是太棒了(加后缀)。您建议使用['BEV','EDU']将它们创建为一个重塑的单一列。但我需要将它们分别重塑成两个单独的列。我想这里需要调用两次重塑。 - Georg Heiler
@GeorgHeiler 没错,这是我的错误。在这种情况下,你需要在for循环内部进行操作,然后再拼接或合并。 - BENY
还有一件事:BEV_age_perc不是作为输出列创建的,而是BEV是输出列的名称。这个能改变吗?还是需要手动重命名。 - Georg Heiler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接