我有这个数据框:
import pandas as pd
import numpy as np
import datetime
def creatingDataFrame():
dateList=[]
dateList.append(datetime.date(2002,1,1))
dateList.append(datetime.date(2002,2,1))
dateList.append(datetime.date(2002,1,1))
dateList.append(datetime.date(2002,1,1))
dateList.append(datetime.date(2002,2,1))
raw_data = {'Date': dateList,
'Company': ['A', 'B', 'B', 'C' , 'C'],
'var1': [10, 20, 30, 40 , 50]}
df = pd.DataFrame(raw_data, columns = ['Date','Company', 'var1'])
df.loc[1, 'var1'] = np.nan
return df
if __name__=="__main__":
df=creatingDataFrame()
print(df)
Date Company var1
0 2002-01-01 A 10.0
1 2002-02-01 B NaN
2 2002-01-01 B 30.0
3 2002-01-01 C 40.0
4 2002-02-01 C 50.0
我想在以下数据框中转换此数据:
Date A B C
0 2002-01-01 10 30 40
1 2002-02-01 NaN NaN 50
我看到这样做的唯一方法是通过每个公司的筛选并合并每个结果,但是必须有一种简单的方法来做到这一点(?)。
答案 0 :(得分:1)
使用pivot
:
df.pivot(index='Date', columns='Company', values='var1')
Company A B C
Date
2002-01-01 10.0 30.0 40.0
2002-02-01 NaN NaN 50.0