gpt4 book ai didi

Python:DataFrame.melt - 如何选择一系列列作为标识符变量?

转载 作者:行者123 更新时间:2023-12-05 07:26:16 24 4
gpt4 key购买 nike

我正在尝试更改数据集的结构

目前有:

RE id    Country    0    1   2    ...    n
1001 CN,TH CN TH nan ... nan
1002 UK UK nan nan ... nan

我已将“国家/地区”列拆分出来,因此还有其他列。现在我正在尝试使用 df.melt 来获取此信息:

RE id    var  val 
1001 0 CN
1001 0 TH

所以我最终可以通过使用枢轴来解决这个问题

RE id     Country
1001 TH
1001 CN

我试过:

df = a.melt(id_vars=[a[[0]],a[[1]],a[[2]]], value_vars=['RE id'])

如何选择数据框中的列范围以用作标识符变量? https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.melt.html#pandas.DataFrame.melt

最佳答案

我认为问题在于您错误地引用了列名。另外,我相信您有 id_vars(我认为应该是 Re id)和 value_vars(列名 01) 在你的代码中反转。

我是这样处理的

导入

import pandas as pd
import numpy as np

这里是部分数据,足以证明可能存在的问题

a = [['Re id', 0, 1],[1001,'CN','TH'],[1002,'UK',np.nan]]
df = pd.DataFrame(a[1:], columns=a[0])
print(df)

Re id 0 1
0 1001 CN TH
1 1002 UK NaN

现在,使用pd.melt

  1. id_vars 指向Re id
  2. value_vars 作为您要融化 的 2 列(即列名 01)
df_melt = pd.melt(df, id_vars=['Re id'], value_vars=[0,1], value_name='Country')
df_melt.sort_values(by=['Re id', 'Country'], ascending=[True,False], inplace=True)
print(df_melt)
Re id variable Country
2 1001 1 TH
0 1001 0 CN
1 1002 0 UK
3 1002 1 NaN

此外,由于您在单独的列中有 Country 名称(01),我认为您不需要使用Country 列。

关于Python:DataFrame.melt - 如何选择一系列列作为标识符变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com