[英]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.