У меня есть фрейм данных, который содержит дневные даты и несколько станций, на станциях есть дни, в которых нет измерений, но даты завершены. Я сделал несколько примеров данных:
import pandas as pd
import numpy as np
np.random.seed(0)
rng = pd.date_range('1980-01-01', periods = 24, freq='MS')
df = pd.DataFrame({'Date':rng,'Stn1':np.random.randn(len(rng)),'Stn2':np.random.randn(len(rng)),'Stn3':np.random.randn(len(rng)) })
df.loc[df['Stn1'] > 1,'Stn1'] = np.nan
df.loc[df['Stn2'] < -1,'Stn2'] = np.nan
df.loc[df['Stn3'] > 0,'Stn3'] = np.nan
И вот как это выглядит:
Date Stn1 Stn2 Stn3
0 1980-01-01 NaN 2.269755 -1.613898
1 1980-01-02 0.400157 NaN -0.212740
2 1980-01-03 0.978738 0.045759 -0.895467
3 1980-01-04 NaN -0.187184 NaN
4 1980-01-05 NaN 1.532779 -0.510805
5 1980-01-06 -0.977278 1.469359 -1.180632
6 1980-01-07 0.950088 0.154947 -0.028182
7 1980-01-08 -0.151357 0.378163 NaN
8 1980-01-09 -0.103219 -0.887786 NaN
9 1980-01-10 0.410599 NaN NaN
10 1980-01-11 0.144044 -0.347912 -0.634322
11 1980-01-12 NaN 0.156349 -0.362741
12 1980-01-13 0.761038 1.230291 -0.672460
13 1980-01-14 0.121675 1.202380 -0.359553
14 1980-01-15 0.443863 -0.387327 -0.813146
15 1980-01-16 0.333674 -0.302303 -1.726283
16 1980-01-17 NaN NaN NaN
17 1980-01-18 -0.205158 NaN -0.401781
18 1980-01-19 0.313068 NaN -1.630198
19 1980-01-20 -0.854096 1.950775 NaN
20 1980-01-21 -2.552990 -0.509652 -0.907298
21 1980-01-22 0.653619 -0.438074 NaN
22 1980-01-23 0.864436 NaN NaN
23 1980-01-24 -0.742165 0.777490 NaN
Что я хочу сделать, это получить что-то вроде этого:
На оси X есть даты, а вдоль оси Y - каждая станция и даты, в которые каждая из них получила измерения, поэтому, когда станция имеет NaN, есть разрыв. Есть идеи?