Python / Pandas:如何合并数据框并重塑为长格式?

时间:2019-04-10 03:41:30

标签: python dataframe seaborn

我在这类数据框中拥有数据(列名和值均为假):

frame1 =            
           AA        BB
Date_Time                    
2001       1         5
2002       2         6
2017       3         7
2018       4         8

frame2 = 
           AA        BB
Date_Time                    
2001       10         50
2002       20         60
2017       30         70
2018       40         80

我想将它们合并并整形为一个长格式的数据框,以使用seaborn进行可视化。像这样:

frame = 
        stn origin   value
Date
2001    AA  f1      1   
            f2      10
        BB  f1      5   
            f2      50
 ...
 ...
 2018   AA  f1      4   
            f2      40
        BB  f1      8   
            f2      80

我该怎么做?我没有任何代码可显示,因为我的几次半心半意的尝试远远没有达到我想要的。

2 个答案:

答案 0 :(得分:3)

好吧,Ravishankar为我指明了正确的方向。通过一些搜索,我发现(几乎)如何做到这一点,将{{ }}与组密钥和双堆叠一起使用:

concat

但是,此方法将生成具有多索引的序列,这并不适合所有情况。
要创建具有单个索引(年)的数据框,可以使用以下内容:

foo = pds.concat(dict(f1 = frame1, f2 = frame2), axis=1)

foo.stack().stack()

Date         
2001       AA  f1    1
               f2    10
           BB  f1    5
               f2    50
2002       AA  f1    2
               f2    20
           BB  f1    6
               f2    60

然后可以根据需要重命名列。

答案 1 :(得分:1)

pd.concat应该可以工作以合并数据帧。无法理解数据样本的重塑

if (!MobileFormat(num, brand, currency))
{
    var digits = brand.Equals(Brand.LED.ToString()) ? 9 : 10;
    key = $"The number of phone numbers must be '{digits}' digits.";
}