我正在处理温度数据,我创建了一个包含几千个城市多年平均值的文件,格式如下(df1
)
Date City PRCP TMAX TMIN TAVG
01-Jan Zurich 0.94 3.54 0.36 1.95
01-Feb Zurich 4.12 9.14 3.04 6.09
01-Mar Zurich 4.1 5.9 0.3 3.1
01-Apr Zurich 0.32 13.78 4.22 9
01-May Zurich 9.42 11.32 5.34 8.33
.
.
.....
我有所有365天的上述数据,没有空值。注意date
列只有day
和month
,因为年份是不相关的
基于上面的数据,我正在尝试清理年度文件,我的第二个数据帧具有以下格式的数据(df2
)
ID Date City PRCP TAVG TMAX TMIN
abcd1 2020-01-01 Zurich 0 -1.9 -0.9
abcd1 2020-01-02 Zurich 9.1 12.7 4.9
abcd1 2020-01-03 Zurich 0.8 8.55 13.2 3.9
abcd1 2020-01-04 Zurich 0 4.1 10.8 -2.6
.
.
.....
每个城市都有一个独特的ID
。日期列的格式为%y-%m-%d
我试图通过匹配day
和month
来用第一个数据帧中的值替换第二个数据帧中的空值。这就是我试过的
df1["Date"] = pd.to_datetime(df1["Date"], errors = 'coerce') ##date format change##
df1["Date"] = df1['Date'].dt.strftime('%d-%m')
df2 = df2.drop(columns='ID')
df2 = df2.fillna(df1) ##To replace nulls##
df1["Date"] = pd.to_datetime(df1["Date"], errors = 'coerce')
df1["Date"] = df1['Date'].dt.strftime('%Y-%m-%d') ## Change data back to original format##
即使这样,我的年度文件中也会出现空值,即df2
{注意:df1没有空值}
如有必要,请建议一种更好的方法,仅替换空值或对代码进行任何更正
我们可以通过在} 对df2执行更新,如下所示:
df2
上添加一列Date2
,其格式与df1
上的Date
列相同。然后,在使用此日期格式和城市作为索引设置数据帧时,我们使用^{^{} 是使用来自另一个数据帧的非NA值就地修改。数据帧的长度不会因更新而增加,只更新匹配索引/列标签处的值。因此,我们使用相同的行索引创建这两个数据帧,以便对具有相同列索引/标签的相应列执行更新
注意,我们在^{} 中使用参数
overwrite=False
,以确保只更新原始数据帧df2
中的NaN值演示
数据设置:
将数据添加到
df1
以显示从df1
替换df2
的值:运行新代码:
结果:
相关问题 更多 >
编程相关推荐