Python :用列的唯一现值填充 Dataframe 中的列

Python : Fill columns in a Dataframe with the unique present value of the column

假设我有这个数据框,其中有两列未满。

data1 = [12,34,465,678,896]
data2 = ['thx','','','','']
data3 = ['','',34,'','']

df = pd.DataFrame(list(zip(data1,data2,data3)),columns = ['Data1','Data2','Data3'])
print(df)

   Data1 Data2 Data3
0     12   thx
1     34
2    465          34
3    678
4    896

我想用列中存在的唯一值填充这些列。所以我想得到类似的东西:

   Data1 Data2 Data3
0     12   thx    34
1     34   thx    34
2    465   thx    34
3    678   thx    34
4    896   thx    34

我应该使用什么功能来做到这一点?

想到两个想法:

# Pre-work: you want your null values to be actual NaN
import numpy as np

df = df.replace('', np.nan)

# Method 1: FFill / BFill methods
ans = df.fillna('ffill').fillna('bfill')

# Method 2: Use a fillna dict
ans = df.fillna({col: df[col].unique()[0] for col in df.columns})

让我知道是否可行(我更喜欢第一个)