首页 > 解决方案 > pandas join 操作(非常大的数据)

问题描述

我有一个大约 500 万行的 pandas DataFrame。这些列代表一种键值格式。

示例 :- 'Time', 'P1','Q1','P2','Q2'....'P20','Q20'(共 21 列) P1,P2,...P20 可以取不同的值范围从 100..1000 我需要创建一个数据框,其中 P1..P20 的值成为键(键范围从 100..1000)并且对应的值 Q1,..Q20 应该是每个单独的列。(现在你有 500 万列)

这就像第一个数据帧的转置(缺少键值为 0)。

目前,我正在使用 df.ix[] 将字典中的每一行与相应的列值转换并创建它的数据框,然后加入。

for i in range(1, len(df.index)):
    print(i)
    d = {'Price' : df.ix[:,list(range(2, 81, 2))].loc[i].values, 'Qty': df.ix[:,list(range(3, 82, 2))].loc[i].values}
    master1 = pd.DataFrame(d)
    master1.set_index('Price', inplace=True)
    master = master.join(master1, rsuffix=i)

对于少量数据,这很好,但在 5 百万行上,它需要太多的内存和时间。有什么办法可以让这更快吗?

EndGoal :- 
Current dataFrame Data :-
T1 P1 Q11 
T1 P2 Q21
T1 P3 Q31
T2 P1 Q12
T2 P2 Q22
T3 P3 Q32

Output :- 
P1 Q11 Q12
P2 Q21 Q22
P3 Q31 Q32

-阿皮特

标签: pythonpandasnumpydataframe

解决方案


推荐阅读