您好,我有一個資料框,例如
COL1 COL2
A seq1
B seq1
A seq2
A seq3
A seq4
A seq5
B seq9
B seq4
而且我只想保留其中A和BCOL1具有相同COL2值的行。
然后我應該得到;
COL1 COL2
A seq1
B seq1
A seq4
B seq4
請問有人有想法嗎?
uj5u.com熱心網友回復:
您可以分組COL2(不直觀,不是嗎?),并獲取COL1每個組的唯一專案數:
filtered_df = df[df.groupby('COL2')['COL1'].transform('nunique') == 2]
輸出:
>>> filtered_df
COL1 COL2
0 A seq1
1 B seq1
4 A seq4
7 B seq4
uj5u.com熱心網友回復:
如果您COL1只有 2 個值,您還可以過濾df"COL1", mergeon中的值COL2;然后melt:
out = (pd.melt(df[df['COL1']=='A'].merge(df[df['COL1']=='B'], on='COL2'),
id_vars=['COL2'], value_name='COL1')
.drop(columns='variable')[['COL1', 'COL2']])
輸出:
COL1 COL2
0 A seq1
1 A seq4
2 B seq1
3 B seq4
uj5u.com熱心網友回復:
您還可以使用pd.crosstab:
seq = pd.crosstab(df['COL1'], df['COL2']).all().loc[lambda x: x].index
out = df.loc[df['COL2'].isin(seq)]
print(out)
# Output
COL1 COL2
0 A seq1
1 B seq1
4 A seq4
7 B seq4
中間結果:
>>> pd.crosstab(df['COL1'], df['COL2'])
COL2 seq1 seq2 seq3 seq4 seq5 seq9
COL1
A 1 1 1 1 1 0
B 1 0 0 1 0 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446247.html
標籤:Python python-3.x 熊猫 数据框
