Python fillna 与 Series 共享相同的索引
Python fillna with Series sharing same index
我的数据框列上有一些空值。我使用线性回归来预测缺失值,但现在我想用预测值替换 nan。
我想使用索引作为 fillna 的条件,因为我不想预测所有其他值。
这是我在数据框中的空值:df
is a b c d e f
72 True 171.94 103.89 103.45 NaN 3.25 112.79
99 True 171.93 104.07 104.18 NaN 3.14 113.08
151 True 172.07 103.80 104.38 NaN 3.02 112.93
197 True 171.45 103.66 103.80 NaN 3.62 113.27
241 True 171.83 104.14 104.06 NaN 3.02 112.36
这里的系列return 用于填充索引的缺失值:prev
72 4.318525
99 4.393668
151 4.410457
197 4.319014
241 4.650617
我不知道填充缺失值的最佳方法是什么,我想确定是否填充了共享相同索引位置且带有循环的正确值?
您可以使用fillna
(基于索引)
df = df.fillna({'d': prev})
# OR
df['d'] = df['d'].fillna(prev)
输出:
>>> df
is a b c d e f
72 True 171.94 103.89 103.45 4.318525 3.25 112.79
99 True 171.93 104.07 104.18 4.393668 3.14 113.08
151 True 172.07 103.80 104.38 4.410457 3.02 112.93
197 True 171.45 103.66 103.80 4.319014 3.62 113.27
241 True 171.83 104.14 104.06 4.650617 3.02 112.36
如果索引相同(只需确保数据 df 中的数据与要合并到的数据框具有相同的列名,即 'd'):
df_merge = pd.merge(df, df_data, left_index = True, right_index = True, suffixes=('_x', '')).drop('d_x', axis = 1)
df_merge
我的数据框列上有一些空值。我使用线性回归来预测缺失值,但现在我想用预测值替换 nan。 我想使用索引作为 fillna 的条件,因为我不想预测所有其他值。
这是我在数据框中的空值:df
is a b c d e f
72 True 171.94 103.89 103.45 NaN 3.25 112.79
99 True 171.93 104.07 104.18 NaN 3.14 113.08
151 True 172.07 103.80 104.38 NaN 3.02 112.93
197 True 171.45 103.66 103.80 NaN 3.62 113.27
241 True 171.83 104.14 104.06 NaN 3.02 112.36
这里的系列return 用于填充索引的缺失值:prev
72 4.318525
99 4.393668
151 4.410457
197 4.319014
241 4.650617
我不知道填充缺失值的最佳方法是什么,我想确定是否填充了共享相同索引位置且带有循环的正确值?
您可以使用fillna
(基于索引)
df = df.fillna({'d': prev})
# OR
df['d'] = df['d'].fillna(prev)
输出:
>>> df
is a b c d e f
72 True 171.94 103.89 103.45 4.318525 3.25 112.79
99 True 171.93 104.07 104.18 4.393668 3.14 113.08
151 True 172.07 103.80 104.38 4.410457 3.02 112.93
197 True 171.45 103.66 103.80 4.319014 3.62 113.27
241 True 171.83 104.14 104.06 4.650617 3.02 112.36
如果索引相同(只需确保数据 df 中的数据与要合并到的数据框具有相同的列名,即 'd'):
df_merge = pd.merge(df, df_data, left_index = True, right_index = True, suffixes=('_x', '')).drop('d_x', axis = 1)
df_merge