久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

按重復對 DataFrame 的行進行排序

Sort rows of DataFrame by duplicate(按重復對 DataFrame 的行進行排序)
本文介紹了按重復對 DataFrame 的行進行排序的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

如何對 DataFrame 進行排序,以便回收"重復列中的行?

How can I sort a DataFrame so that rows in the duplicate column are "recycled"?

例如,我原來的 DataFrame 是這樣的:

For example, my original DataFrame looks like this:

In [3]: df
Out[3]: 
    A  B
0  r1  0
1  r1  1
2  r2  2
3  r2  3
4  r3  4
5  r3  5

我希望它轉向:

In [3]: df_sorted
Out[3]: 
    A  B
0  r1  0
2  r2  2
4  r3  4
1  r1  1
3  r2  3
5  r3  5

對行進行排序,使得列 A 中的行處于回收"狀態.時尚.

Rows are sorted such that rows in columns A are in a "recycled" fashion.

我在 Pandas 中搜索過 API,但似乎沒有任何合適的方法可以這樣做.我可以編寫一個復雜的函數來完成此操作,但只是想知道是否有任何智能方法或現有的 pandas 方法可以做到這一點?提前非常感謝.

I have searched APIs in Pandas, but it seems there isn't any proper method to do so. I can write a complicated function to accomplish this, but just wondering is there any smart way or existing pandas method can do this? Thanks a lot in advance.

更新:為錯誤的陳述道歉.在我真正的問題中,列 B 包含字符串值.

Update: Apologies for a wrong statement. In my real problem, column B contains string values.

推薦答案

你可以使用cumcount 用于計算列 A 中的重復項,然后是 sort_values 首先由 A (在示例沒必要,在實際數據中可能很重要),然后通過 C.最后刪除列 C 由 <代碼>丟棄:

You can use cumcount for counting duplicates in column A, then sort_values first by A (in sample not necessary, in real data maybe important) and then by C. Last remove column C by drop:

df['C'] = df.groupby('A')['A'].cumcount()
df.sort_values(by=['C', 'A'], inplace=True)
print (df)
    A  B  C
0  r1  0  0
2  r2  2  0
4  r3  4  0
1  r1  1  1
3  r2  3  1
5  r3  5  1

df.drop('C', axis=1, inplace=True)
print (df)
    A  B
0  r1  0
2  r2  2
4  r3  4
1  r1  1
3  r2  3
5  r3  5

時間安排:

小df (len(df)=6)

In [26]: %timeit (jez(df))
1000 loops, best of 3: 2 ms per loop

In [27]: %timeit (boud(df1))
100 loops, best of 3: 2.52 ms per loop

大 df (len(df)=6000)

In [23]: %timeit (jez(df))
100 loops, best of 3: 3.44 ms per loop

In [28]: %timeit (boud(df1))
100 loops, best of 3: 2.52 ms per loop

計時代碼:

df = pd.concat([df]*1000).reset_index(drop=True) 
df1 = df.copy()

def jez(df):
    df['C'] = df.groupby('A')['A'].cumcount()
    df.sort_values(by=['C', 'A'], inplace=True)
    df.drop('C', axis=1, inplace=True)
    return (df)

def boud(df):
    df['C'] = df.groupby('A')['B'].rank()
    df = df.sort_values(['C', 'A'])
    df.drop('C', axis=1, inplace=True)
    return (df)
100 loops, best of 3: 4.29 ms per loop

這篇關于按重復對 DataFrame 的行進行排序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區域周圍繪制一個矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個矩形邊界框中應用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據文本方向檢測圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測圖像中矩形的中心和角度)
主站蜘蛛池模板: 亚洲精品自在在线观看 | 色性av| 中文字幕在线一区 | 日韩一区二区在线视频 | 97超在线视频 | 成人精品一区 | 国产精品久久久 | 国产一区91精品张津瑜 | 欧美日韩中文国产一区发布 | 欧美日韩精品亚洲 | 久久成人精品视频 | 午夜在线精品偷拍 | 怡红院成人在线视频 | 亚洲精品视频观看 | 毛片网站免费观看 | 97av视频| 精品三级在线观看 | 日韩在线国产精品 | 日本人做爰大片免费观看一老师 | 国产在线拍偷自揄拍视频 | 特级黄一级播放 | 国产视频久久 | 激情五月婷婷综合 | 麻豆av网站| 亚洲天堂久久 | 久草久 | 欧美午夜在线 | 欧美性一区二区三区 | 午夜精品久久久久久久久久久久久 | 国产91视频一区二区 | 国产日韩欧美精品一区二区 | 亚洲精品大全 | 国产91在线观看 | 久久手机在线视频 | 国产欧美一区二区三区在线看蜜臀 | 亚洲免费人成在线视频观看 | 99久久精品一区二区毛片吞精 | 综合激情av| 国产 日韩 欧美 制服 另类 | av在线视 | 欧美日韩精品久久久免费观看 |