我有 2 個資料框,其中一個經常輸入。我想連接它們并在最后一個條目中填充 NaN,但如果最后一個條目是 NaN,我想用 NaN 填充
例子:
df = pd.DataFrame(data=[4.5, 4.6, 5.7, 5.7, 6.7, 4, 9.0],
index=list(map(pd.to_datetime, ['00:00', '00:30', '01:00', '01:30', '02:00', '02:30', '03:00'])),
columns=['frequent data'])
df2 = pd.DataFrame(data=[4.5, np.NaN, 5.7, np.NaN],
index=list(map(pd.to_datetime, ['00:00', '01:00', '02:00', '03:00'])),
columns=['data'])
df2
frequent data data
2022-01-15 00:00:00 4.5 4.5
2022-01-15 01:00:00 5.7 NaN
2022-01-15 02:00:00 6.7 5.7
2022-01-15 03:00:00 9.0 NaN
new_df = pd.concat((df, df2), axis=1)
new_df
frequent data data
2022-01-15 00:00:00 4.5 4.5
2022-01-15 00:30:00 4.6 NaN
2022-01-15 01:00:00 5.7 NaN
2022-01-15 01:30:00 5.7 NaN
2022-01-15 02:00:00 6.7 5.7
2022-01-15 02:30:00 4.0 NaN
2022-01-15 03:00:00 9.0 NaN
我想實作這樣的日期框架
frequent data data
2022-01-15 00:00:00 4.5 4.5
2022-01-15 00:30:00 4.6 4.5
2022-01-15 01:00:00 5.7 NaN
2022-01-15 01:30:00 5.7 NaN
2022-01-15 02:00:00 6.7 5.7
2022-01-15 02:30:00 4.0 5.7
2022-01-15 03:00:00 9.0 NaN
有什么簡單的方法嗎,還是我需要為此撰寫函式?
uj5u.com熱心網友回復:
國際大學聯盟:
df2 = df2.reindex(df.index).groupby(lambda x: x.floor('H')).ffill()
new_df = pd.concat([df, df2], axis=1)
print(new_df)
# Output
frequent data data
2022-01-15 00:00:00 4.5 4.5
2022-01-15 00:30:00 4.6 4.5
2022-01-15 01:00:00 5.7 NaN
2022-01-15 01:30:00 5.7 NaN
2022-01-15 02:00:00 6.7 5.7
2022-01-15 02:30:00 4.0 5.7
2022-01-15 03:00:00 9.0 NaN
您還fillna可以concat:
new_df = pd.concat([df, df2], axis=1).groupby(lambda x: x.floor('H')).ffill()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412617.html
標籤:
上一篇:在二維陣列中選擇大于x的值
