转换大型数据框-花费太长时间

时间:2018-08-27 06:02:52

标签: python pandas dataframe

我从CSV加载了以下格式的数据框:

           stock_code    price 
20180827     001          10
20180827     002          11
20180827     003          12
20180827     004          13
20180826     001          14
20180826     002          15
20180826     003          11
20180826     004          10
20180826     005          19

我想将其转换为以下格式:

            001     002     003     004     005
20180827    10      11      12      13      nan
20180826    14      15      11      10      19

这是我执行转换的函数(oracle_data是原始数据帧),但是547500行数据帧需要7分钟。有没有办法加快速度?

def transform_data(oracle_data):
    data_code = oracle_data[0]  
    data_date = oracle_data[1] 
    factor_date = sorted(data_date.unique()) 
    stock_list =  sorted(data_code.unique())     
    factor_data = pd.DataFrame(index = factor_date, columns = stock_list)
    sort = oracle_data.sort_index()
    for n in oracle_data.index:
        factor_data.at[oracle_data.at[n,1],oracle_data.at[n,0]]=oracle_data.at[n,2]
    return factor_data

1 个答案:

答案 0 :(得分:1)

我相信这里可以使用pandas.pivot

df = pd.pivot(df.index, df['stock_code'], df['price'])