從pandas.Dataframe行給定一個pandas.DataFrame
:刪除基於項
| Col_A | Col_B | Other_Columns
0 | A0 | B0 | …
1 | A1 | B1 | …
2 | A2 | B2 | …
3 | A3 | B3 | …
… | … | … | …
我一直試圖保持這種DataFrame
的一個子集:除暴安良其中兩個A
和B
條目的唯一行(例如,如果6行說,這兩個值A6
和B6
不會出現其他地方在DataFrame
,我們要刪除此行)
我不想放棄重複。此外,我不想獲得唯一的值(如果我理解的很好,就像將列表轉換爲集合一樣,我是對嗎?),而是隻顯示一次的值。
在這一點上,這是我有:
counts = df[['Col_A','Col_B']].stack().value_counts(ascending=True)
myList = [0] + [item for item in counts[counts.values == 1].index]
toRemove = []
for i in df.index:
if (df.at[i,'Col_A'] and df.at[i, 'Col_B']) in myList:
toRemove.append(i)
final_df = df[~df.index.isin(toRemove)]
這是不是很有效(數據幀是相當大的> 1000萬線)必須有一個更Python戰略,涉及的內置功能熊貓,對吧? 另外,我不太確定第一行是正確的:通過堆疊兩列,我是否確保對兩列的條目執行計數?
請不要猶豫,如果你需要更多的信息或如果我的寫作不清楚給你。
非常感謝您抽出寶貴時間:-)
@unutbu,國際海事組織它不是一個副本。 OP希望保留__either__列中的值不唯一的行 – MaxU
@MaxU:我的錯誤;謝謝重新開放。 – unutbu