我需要重塑数据框
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
需要一些建议或解决方案,如何获得所需的结果。
答案 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