在多索引Pandas DataFrame中,如果想要通过次日值来填充缺失值,可以使用fillna
方法结合shift
方法来实现。以下是一个详细的步骤和示例代码:
假设我们有一个多索引的DataFrame,其中包含日期和股票代码两个索引层级,并且某些日期的股票价格数据缺失。我们希望通过次日的价格来填充这些缺失值。
import pandas as pd
import numpy as np
# 创建一个示例的多索引DataFrame
index = pd.MultiIndex.from_tuples([
('2023-01-01', 'AAPL'), ('2023-01-01', 'GOOGL'),
('2023-01-02', 'AAPL'), ('2023-01-02', 'GOOGL'),
('2023-01-03', 'AAPL'), ('2023-01-03', 'GOOGL'),
('2023-01-04', 'AAPL'), ('2023-01-04', 'GOOGL')
], names=['Date', 'Stock'])
data = {
'Price': [150.75, 2800.50, np.nan, 2820.75, 152.25, np.nan, 153.75, 2830.00]
}
df = pd.DataFrame(data, index=index)
print("原始DataFrame:")
print(df)
# 使用次日值填充缺失值
df_filled = df.groupby(level='Stock').apply(lambda x: x.fillna(method='ffill')).fillna(method='bfill')
print("\n填充后的DataFrame:")
print(df_filled)
groupby
方法按股票代码分组,然后在每个组内使用fillna
方法的ffill
(前向填充)来填充缺失值。由于ffill
只能填充到下一个有效值,我们还需要在外层再进行一次bfill
(后向填充)以确保所有缺失值都被正确填充。fillna
方法的limit
参数来限制填充的范围。通过上述方法,可以有效地在多索引Pandas DataFrame中通过次日值来填充缺失值,保持数据的完整性和连续性。
领取专属 10元无门槛券
手把手带您无忧上云