DataFrame:为不同的列添加相同的数据并合并整个文件

时间:2018-02-01 17:40:24

标签: python pandas dataframe

我有一个如下所示的DataFrame:

Name Year Jan Feb Mar Apr
Bee  1998 26  23  22  19
Cee  1999 43  23  43  23

我想将DataFrame更改为以下内容:

Name Year Mon Val
Bee  1998 1   26
Bee  1998 2   23
Bee  1998 3   22
Bee  1998 4   19
Cee  1999 1   43
Cee  1999 2   23
Cee  1999 3   43
Cee  1999 4   23

如何使用Pandas或任何其他库在Python中获取此内容?

2 个答案:

答案 0 :(得分:0)

首先,使用pd.DataFrame.melt

重塑您的DataFrame
df = df.melt(id_vars=['Name', 'Year'], var_name='Mon', value_name='Value')

...然后将Mon值转换为日期时间值,并提取月份数:

df.loc[:, 'Mon'] = pd.to_datetime(df['Mon'], format='%b').dt.month

#   Name  Year  Mon  Value
# 0  Bee  1998    1     26
# 1  Cee  1999    1     43
# 2  Bee  1998    2     23
# 3  Cee  1999    2     23
# 4  Bee  1998    3     22
# 5  Cee  1999    3     43
# 6  Bee  1998    4     19
# 7  Cee  1999    4     23

答案 1 :(得分:0)

df = df.set_index(['Name', 'Year'])
df.columns = pd.to_datetime(df.columns, format='%b').month
df.stack()

返回

Name  Year   
Bee   1998  1    26
            2    23
            3    22
            4    19
Cee   1999  1    43
            2    23
            3    43
            4    23
dtype: int64