python - 转换长数据帧并提取字符串

标签 python pandas dataframe

嗨,我有这样的数据框:

    Date A_2002 B_2003 C_2004 D_2005 Type
03-2002   20     30      12     42    X
04-2002   12     321     12     23    X
03-2002   10     31      2      3     Y

我想将其转换为长版本并从中提取字符串类型,因此最终结果将是:
   Date NewCol Extracted Type Value
03-2002 A       2002      X    20
03-2002 B       2003      X    30
03-2002 C       2004      X    12
03-2002 D       2005      X    42
04-2002 A       2002      X    12
04-2002 B       2003      X    321
04-2002 C       2004      X    12
04-2002 D       2005      X    23
03-2002 A       2002      Y    10
03-2002 B       2003      Y    31
03-2002 C       2004      Y    2
03-2002 D       2005      Y    3

因此,最终结果会将列名中的值转换为两个新值并如上所示融合数据。 Pandas 可以吗?

最佳答案

你可以在 stackset_index 之后做 str.split :

m = df.set_index(['Date','Type'])
m.columns = m.columns.str.split('_',expand=True)
out = (m.stack([0,1]).rename('Value').reset_index()
     .rename(columns={'level_2':'NewCol','level_3':'Extracted'}))
       Date Type NewCol Extracted  Value
0   03-2002    X      A      2002   20.0
1   03-2002    X      B      2003   30.0
2   03-2002    X      C      2004   12.0
3   03-2002    X      D      2005   42.0
4   04-2002    X      A      2002   12.0
5   04-2002    X      B      2003  321.0
6   04-2002    X      C      2004   12.0
7   04-2002    X      D      2005   23.0
8   03-2002    Y      A      2002   10.0
9   03-2002    Y      B      2003   31.0
10  03-2002    Y      C      2004    2.0
11  03-2002    Y      D      2005    3.0

关于python - 转换长数据帧并提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61104122/

相关文章:

Python二进制文件读取问题

python - 如何使用 Pandas 调整数据框

python - 比较两个列表并添加一个包含结果的新列

apache-spark - 无法推断类型 : <type 'unicode' > when converted RDD to DataFrame 的架构

dataframe - 有没有一种简单的方法可以并行运行 DataFrames::by ?

python - 如何解决这个错误? django+celery+rabbitmq+mysql+redis中的 "RestartFreqExceeded: 5 in 1s"

python - django.core.exceptions.ImproperlyConfigured : Requested setting CACHES, 但未配置设置。您必须定义环境变量

python - 标准化频率并将数据帧中的多个时间序列扩展到给定日期

用于在线机器学习 MDP 的 Python 库

Python:使用 pandas 导入 csv。尝试绘制一列,但出现错误,提示 "no numerical data to plot"