我有以下資料框:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2],
'b': [None, 'w', None, 'z']
})
| 一種 | b |
|---|---|
| 1 | 沒有 |
| 1 | 'w' |
| 2 | 沒有 |
| 2 | 'z' |
我想重復不在None“b”列中的值,而是基于“a”列中的值。
最后我會有這個資料框:
| 一種 | b |
|---|---|
| 1 | 'w' |
| 1 | 'w' |
| 2 | 'z' |
| 2 | 'z' |
uj5u.com熱心網友回復:
關于您希望如何概括的邏輯尚不完全清楚,但您可以bfill/ffill每個組:
df['b'] = df.groupby('a')['b'].apply(lambda x: x.bfill().ffill())
輸出:
a b
0 1 w
1 1 w
2 2 z
3 2 z
uj5u.com熱心網友回復:
這有點棘手,但它有效。基本上發生的情況是,對于“a”的每個子樣本,我們將用“b”列填充 na 值。我假設對于“a”的每個元素,只存在一個“b”值,不再存在
df = pd.DataFrame({
'a': [1, 1, 2, 2],
'b': [None, 'w', None, 'z']})
df
a b
0 1 None
1 1 w
2 2 None
3 2 z
for i in df['a'].unique():
df[df['a']==i] = df[df['a']==i].fillna(df[df['a']==i].dropna()['b'].iloc[0])
df
a b
0 1 w
1 1 w
2 2 z
3 2 z
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446257.html
標籤:Python python-3.x 熊猫
