在Python的pandas库中,你可以使用 `fillna` 方法来补充(填充)DataFrame中的缺失值(NaN)。以下是一些常用的方法:
1. 使用特定值填充:
import pandas as pd
创建一个包含缺失值的示例DataFrame
data = {'A': [1, 2, 3, 4], 'B': [5, 6, None, 8], 'C': [9, None, None, None]}
df = pd.DataFrame(data)
使用0填充缺失值
df.fillna(0, inplace=True)
print(df)
2. 使用前一个值填充(前向填充):
使用前一个值填充缺失值
df.fillna(method='bfill', inplace=True)
print(df)
3. 使用平均值填充:
使用平均值填充缺失值
df.fillna(df.mean(), inplace=True)
print(df)
4. 使用中位数填充:
使用中位数填充缺失值
df.fillna(df.median(), inplace=True)
print(df)
5. 使用众数填充:
使用众数填充缺失值
df.fillna(df.mode().iloc, inplace=True)
print(df)
6. 使用插值填充:
使用插值方法填充缺失值
df.interpolate(inplace=True)
print(df)
7. 使用 `map` 和 `combine_first` 替换NaN:
创建新的Series,然后用combine_first替换NaN
df1 = pd.DataFrame({'gross(mean)': [np.nan, 3.e+06, 4.e+05, 2.011249e+06, 10, 20, 30], 'interval': [1922, 1927, 1932, 1938, 1932, 1938, 1953]})
df1['interval'] = pd.cut(df1['interval'], bins=[1920, 1925, 1930, 1935, 1940, 1945, 1950, 1955])
print(df1)
df = pd.DataFrame({'name': ['k', 'l'], 'gross': [1000, np.nan], 'interval': [1938, 1952]})
df['interval'] = pd.cut(df['interval'], bins=[1920, 1925, 1930, 1935, 1940, 1945, 1950, 1955])
df1 = df1.set_index('interval')
df = df.set_index('interval')
df.combine_first(df1, fill_value=0)
print(df)
选择哪种方法取决于你的具体需求。