python - 仅将某些列 reshape 为单个列

标签 python pandas

import pandas as pd
from datetime import datetime

df = pd.DataFrame({'origin': ['japan', 'japan','japan','japan'],
                       'pastime': ['baseball', 'sumo', 'keirin', 'football'],
                       datetime(2000,1,1) : [4,5,4,5],
                   datetime(2005,1,1) : [4, 3, 2, 1],
                   datetime(2010,1,1) : [4, 2, 2, 1]
                  })

我的数据框有很多带有日期标签的列:

Index(['origin','pastime', 2000-01-01 00:00:00,
       2005-01-01 00:00:00, 2010-01-01 00:00:00],
      dtype='object')

我想 reshape 数据框以包含列:origin, pastime, date, value

第一个条目行的位置:

origin = japan
pastime = baseball
date = 2001-01-01
value = 4

我见过使用 stack 将列作为索引推送到行中的示例,但在我的例子中,它也将“origin”和“pastime”列向下推送。

我将如何进行这种转换?

最佳答案

我认为您正在寻找melt:

df.melt(['origin', 'pastime'], var_name='date')

   origin   pastime       date  value
0   japan  baseball 2005-01-01      4
1   japan      sumo 2005-01-01      3
2   japan    keirin 2005-01-01      2
3   japan  football 2005-01-01      1
4   japan  baseball 2010-01-01      4
5   japan      sumo 2010-01-01      2
6   japan    keirin 2010-01-01      2
7   japan  football 2010-01-01      1
8   japan  baseball 2000-01-01      4
9   japan      sumo 2000-01-01      5
10  japan    keirin 2000-01-01      4
11  japan  football 2000-01-01      5

关于python - 仅将某些列 reshape 为单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47343204/

相关文章:

python - 在终端的同一目录中执行多个 .py python 脚本?

python - jinja2.exceptions.TemplateSyntaxError : expected token 'end of print statement' , 得到 'posted'

python - 如何计算数据框行的标准偏差?

python 和 Pandas : Combine columns into a date

python - 使用列表理解 (Pandas) 从 DataFrame 列表中删除 DataFrame 的列

python - OR 函数的感知器不收敛

python - 为什么我在seaborn 中得到两个图例?

pandas - 如何有选择地过滤pandas组中的元素

python - 如何从 pandas 的一列中获取不包含在另一列中的 id 列表

Python从特定日期中提取周数