【问题标题】:Transform a large dataframe - takes too long [duplicate]转换大型数据框 - 花费太长时间 [重复]
【发布时间】:2019-02-01 15:22:19
【问题描述】:

我有一个从 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

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

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

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

【讨论】:

  • 效果很好,非常感谢
  • @Amoxz - 欢迎您!如果我的回答有帮助,请不要忘记 accept 它 - 单击答案旁边的复选标记,将其从灰色切换为已填充。谢谢。
猜你喜欢
  • 2023-04-04
  • 2020-03-08
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多