【发布时间】:2021-08-11 01:13:37
【问题描述】:
我正在处理温度数据,我创建了一个包含几千个城市多年平均值的文件,格式如下(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 没有空值}
如有必要,请建议一种更好的方法来仅替换空值或对代码进行任何更正。
【问题讨论】:
-
如果我错了,请纠正我,但 df1 没有空值,所以您的意思是
df2 = df1.fillna(df2)? -
与让 Pandas 吐出你想要的 NaN 无关,但与“有没有更好的方法来替换空值”的问题有关,你可能想看看 Sklearn。他们有一些用于估算缺失值的内置工具:scikit-learn.org/stable/modules/impute.html
-
@HenryEcker 是的,我就是这个意思,抱歉打错了
-
如果需要进一步澄清答案,请告诉我!
标签: python pandas dataframe time-series temperature