【发布时间】:2017-05-30 21:55:36
【问题描述】:
在 m*(n+1) 的 pandas 数据框 data_df 中,有一个 timestamp 列,其值可能是 range(0,p) 中的重复整数(表示时间;总共有 p 个唯一值)并且没有缺失值。还有其他列data_1、data_2、data_3、...data_n,每列都有一些缺失值。
我想使用与该行的timestamp 值相关的特定数字来填充数据列的每一行中的缺失值。因此,我得到了一个 p*n pandas 数据框median_table。 median_table的第i行的值用于填充data_df中的缺失值,timestamp为i。
但是,我想不出一种快速且便于记忆的方法来执行此操作。目前,我使用以下代码(median_table 和 data_df 已经定义):
new_data_df = pd.DataFrame()
for _timestamp in median_table.timestamp:
temp_df = data_df.loc[data_df.timestamp == _timestamp]
temp_df.fillna(median_table.loc[_timestamp, :], inplace=True)
new_data_df = new_data_df.append(temp_df)
这是非常低效的。另一种算法:
for _timestamp in median_table.timestamp:
data_df.loc[data_df.timestamp == _timestamp] = \
data_df.loc[data_df.timestamp == _timestamp]\
.fillna(median_table.loc[_timestamp, :], inplace=False)
对我来说工作同样缓慢。
有没有更快的方法来做同样的事情?
【问题讨论】:
标签: python algorithm pandas dataframe variable-assignment