我是熊猫的新手,我已经试着做以下工作,使用各种各样的命令,基本上没有任何进展。我有一个csv文件,它有10列,前4列是描述性列,其余6列是数字值。我需要做的是创建一个文件,其中包含4个描述性列,一个新列,其中包含数值的标题,再加上所有的数值都粘贴到一个列上。我不知道我是否解释得够好,但这里有一个直观的解释:
现有档案:
Year Type Account Group gross nett discount
1999 A ABC 1 100 80 2%
2000 B XYZ 2 1000 800 5%新档案:
Year Type Account Group Value_Type Amount
1999 A ABC 1 gross 100
1999 A ABC 1 nett 80
1999 A ABC 1 discount 2%
2000 B XYZ 2 gross 1000
2000 B XYZ 2 nett 800
2000 B XYZ 2 discount 5% 实现这一目标的最佳途径是什么?
发布于 2022-02-21 14:32:16
您想要pandas.melt您的数据:
>> df = pd.melt(df, id_vars=["Year", "Type", "Account", "Group"], value_vars=["gross", "nett", "discount"])
>> df
Year Type Account Group variable value
0 1999 A ABC 1 gross 100
1 2000 B XYZ 2 gross 1000
2 1999 A ABC 1 nett 80
3 2000 B XYZ 2 nett 800
4 1999 A ABC 1 discount 2%
5 2000 B XYZ 2 discount 5%该函数以标识符列为原样(id_vars),并为value_vars列中的每个值创建一行。
编辑:与您的输出匹配,只需对行进行排序:
>> print(df.sort_values(["Year", "Type", "Account", "Group"]))
Year Type Account Group variable value
0 1999 A ABC 1 gross 100
2 1999 A ABC 1 nett 80
4 1999 A ABC 1 discount 2%
1 2000 B XYZ 2 gross 1000
3 2000 B XYZ 2 nett 800
5 2000 B XYZ 2 discount 5%https://stackoverflow.com/questions/71207996
复制相似问题