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

2024-06-16 09:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,看起来像这样:

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

我想把数据帧改成这样:

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

我如何用Python和Pandas或任何其他库获得这个


Tags: 数据namepandasvalyearaprmarjan
2条回答

首先,用pd.DataFrame.melt重塑数据帧:

df = df.melt(id_vars=['Name', 'Year'], var_name='Mon', value_name='Value')

…然后将Mon值转换为datetime值,并提取月份号:

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
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

相关问题 更多 >