我有一个大约有500万行的pandas DataFrame。这些列代表一种键值格式。
示例:-'时间','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
-Arpit