簡體   English   中英

根據第 1 列中的不同值獲取行,同時盡可能多地保留第 2 列中的不同值

[英]Get Rows based on distinct values from Column 1, while keep as many distinct values from column 2 as possible

我有一個匹配的處理列和控制列的數據集。 我的問題是為每個處理過的觀察選擇一個控件,基本上是與替換的一對一匹配,除了我想保留盡可能多的獨特控件,即我想利用完整的信息對照組,並且不想對單個對照觀察給予過多的重視。

舉一個具體的例子,在比賽之后,我有下面的 dataframe,在處理和控制列中都有重復的值:

>>>df
treated control
A    a
A    b
B    a
B    b
C    a
C    b
D    a
D    d

我想根據處理中的唯一值獲取行,同時盡可能多地保留來自控件的唯一值 也就是說,我想得到

>>>df
treated control
A    a
B    b
C    a
D    d

或者

>>>df
treated control
A    b
B    a
C    a
D    d

或任何 output 在此示例中保留控制列的所有唯一值(並保持正確的對)。 也就是說,我不想得到,例如

>>>df
treated control
A    a
B    a
C    a
D    a

任何幫助表示贊賞。

嘗試pd.unique + pd.Series + ffill

import pandas as pd

df = pd.DataFrame({
    'col1': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C'},
    'col2': {0: 'a', 1: 'b', 2: 'a', 3: 'b', 4: 'a', 5: 'b'}
})

new_df = (
    df.apply(lambda x: pd.Series(pd.unique(x)))
        .ffill()  # fill NaNs with any value
)

print(new_df)

new_df

  col1 col2
0    A    a
1    B    b
2    C    b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM