我正在处理一个数据集,它在下面的数据框中。
#print(old_df)
col1 col2 col3
0 1 10 1.5
1 1 11 2.5
2 1 12 5,6
3 2 10 7.8
4 2 24 2.1
5 3 10 3.2
6 4 10 22.1
7 4 11 1.3
8 4 89 0.5
9 4 91 3.3
我正在尝试生成另一个数据框,其中包含所选的col1值作为索引,所选的col2值作为列,并分配相应的col3值。
例如:
selected_col1 = [1,2]
selected_col2 = [10,11,24]
新数据框应该看起来像:
#print(selected_df)
10 11 24
1 1.5 2.5 Nan
2 7.8 Nan 2.1
我已经尝试过以下方法
selected_col1 = [1,2]
selected_col2 = [10,11,24]
selected_df =pd.DataFrame(index=selected_col1,columns=selected_col2)
for col1_value in selected_col1:
for col2_value in selected_col2:
qry = 'col1 == {} & col2 == {}'.format(col1_value,col2_value)
col3_value = old_df.query(qry).col3.values
if(len(col3_value) > 0):
selected_df.at[col1_value,col2_value] = col3_value[0]
但是我的数据框大约有2000万行,这种蛮力方法需要很长时间。有比这更好的方法吗?
selected_col1
和selected_col2
列表的长度是多少? - jezrael|
表示或。len(selected_col1)= 1894
,len(selected_col2)= 8546
。 - Satheesh K