Hen*_*nep 55
@Woody Pride建议的for循环是不必要的.你可以把它减少到:
cols = ['X', 'Y']
df.loc[:,col] = df.loc[:,col].ffill()
Run Code Online (Sandbox Code Playgroud)
我还添加了一个包含自我的示例:
>>> import pandas as pd
>>> import numpy as np
>>>
>>> #%% create dataframe
... ts1 = [0, 1, np.nan, np.nan, np.nan, np.nan]
>>> ts2 = [0, 2, np.nan, 3, np.nan, np.nan]
>>> d = {'X': ts1, 'Y': ts2, 'Z': ts2}
>>> df = pd.DataFrame(data=d)
>>> print(df.head())
X Y Z
0 0 0 0
1 1 2 2
2 NaN NaN NaN
3 NaN 3 3
4 NaN NaN NaN
>>>
>>> #%% apply forward fill
... col = ['X', 'Y']
>>> df.loc[:,col] = df.loc[:,col].ffill()
>>> print(df.head())
X Y Z
0 0 0 0
1 1 2 2
2 1 2 NaN
3 1 3 3
4 1 3 NaN
Run Code Online (Sandbox Code Playgroud)
(通常我会对@Woody Pride的答案发表评论,但我没有代表.)
Uwe*_*yer 11
或者使用inplace参数:
df['X'].ffill(inplace=True)
df['Y'].ffill(inplace=True)
Run Code Online (Sandbox Code Playgroud)
不,您不能这样做df[['X','Y]].ffill(inplace=True),因为这首先会通过列选择创建一个切片,因此就地前向填充将创建一个SettingWithCopyWarning。当然,如果您有一个列列表,您可以循环执行此操作:
for col in ['X', 'Y']:
df[col].ffill(inplace=True)
Run Code Online (Sandbox Code Playgroud)
使用的目的inplace是避免复制列。
| 归档时间: |
|
| 查看次数: |
26400 次 |
| 最近记录: |