熊猫:重塑DataFrame而没有MultiIndex

时间:2019-05-14 21:57:38

标签: python pandas dataframe reshape

我需要重塑数据框

data = [
    ['Name 1', '17-11-2018', '2'],
    ['Name 2', '17-11-2018', '4'],
    ['Name 3', '17-11-2018', '6'],
    ['Name 1', '18-11-2018', '4'],
    ['Name 2', '18-11-2018', '6'],
    ['Name 3', '18-11-2018', '8'],
]
df = pd.DataFrame(data, columns = ['name', 'date', 'price'])
print(df)

  product        date price
0  Name 1  17-11-2018     2
1  Name 2  17-11-2018     4
2  Name 3  17-11-2018     6
3  Name 1  18-11-2018     4
4  Name 2  18-11-2018     6
5  Name 3  18-11-2018     8

我想得到这样的结果:

name   17-11-2018 18-11-2018                        
Name 1          2          4
Name 2          4          6
Name 3          6          8

但是我最好的解决方案是使用MultiIndex。

qty = pd.pivot_table(df, index='name', values='price', columns='date', aggfunc=np.sum, fill_value=0)
print(qty)

date   17-11-2018 18-11-2018
name                        
Name 1          2          4
Name 2          4          6
Name 3          6          8

需要一些建议或解决方案,如何获得所需的结果。

1 个答案:

答案 0 :(得分:0)

您可以使用reset_index重设索引,并使用rename_axis重命名列索引:

qty = pd.pivot_table(df, index='name', values='price', columns='date', aggfunc=np.sum, fill_value=0)\
        .reset_index()\
        .rename_axis(None, axis=1)

     name 17-11-2018 18-11-2018
0  Name 1          2          4
1  Name 2          4          6
2  Name 3          6          8

如果您想将name作为索引,请仅使用rename_axis

qty = pd.pivot_table(df, index='name', values='price', columns='date', aggfunc=np.sum, fill_value=0)\
        .rename_axis(None, axis=1)

       17-11-2018 18-11-2018
name                        
Name 1          2          4
Name 2          4          6
Name 3          6          8