1
forループを使用せずに次のコードと同じ結果を得るにはどうすればよいですか?通常のデータは〜500k行です。forループを使用せずに重複のセル値を更新する
data={'key1':[1,2,1,1,2,3,2,2],'key2':[2,2,2,2,2,4,2,2],'class':[5,10,'NaN','NaN','NaN',6,'NaN','NaN']}
frame = pd.DataFrame(data,columns=['key1','key2','class'])
このデータフレームは、次のように、いくつかの[key1,key2]
重複が含まれています[1,2]
と[2,2]
。 重複の最初の発生は有限の'class'
の値を持ちますが、他の重複は'NaN' class
の値が割り当てられています。次のコードでは、最初の発生の値が'class'
になり、同じグループの重複に割り当てられます。
index
ためのコラム
class
と最後
sort_index
で
ffill
によって
for name, group in frame.groupby(['key1', 'key2']):
listOfIndex = group.index
master_idx = listOfIndex[0]
frame['class'].loc[listOfIndex] = frame['class'].loc[master_idx]
key1 key2 class
0 1 2 5
1 2 2 10
2 1 2 5
3 1 2 5
4 2 2 10
5 3 4 6
6 2 2 10
7 2 2 10
おかげでたくさんの@jezrael。これはうまく動作しています。私のバージョンには 'sort_values'がないので、私はパンダを更新しなければなりませんでした。 – JMarc