首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫复制粘贴

熊猫复制粘贴
EN

Stack Overflow用户
提问于 2022-02-21 14:28:01
回答 1查看 18关注 0票数 0

我是熊猫的新手,我已经试着做以下工作,使用各种各样的命令,基本上没有任何进展。我有一个csv文件,它有10列,前4列是描述性列,其余6列是数字值。我需要做的是创建一个文件,其中包含4个描述性列,一个新列,其中包含数值的标题,再加上所有的数值都粘贴到一个列上。我不知道我是否解释得够好,但这里有一个直观的解释:

现有档案:

代码语言:javascript
复制
Year Type  Account Group  gross  nett discount
1999 A     ABC      1      100    80     2%
2000 B     XYZ      2      1000   800    5%

新档案:

代码语言:javascript
复制
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% 

实现这一目标的最佳途径是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 14:32:16

您想要pandas.melt您的数据:

代码语言:javascript
复制
>> 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列中的每个值创建一行。

编辑:与您的输出匹配,只需对行进行排序:

代码语言:javascript
复制
>> 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%
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71207996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档