Пересмотрите и заполните df - pandas - PullRequest
1 голос
/ 25 октября 2019

Я надеюсь заново сэмплировать df и заполнить неопределенные строки. Вот что я сейчас делаю:

d1 = ({   
    'Time' : ['2019-08-02 09:50:11.5','2019-08-02 09:50:11.6','2019-08-02 09:50:11.8','2019-08-02 09:50:12.0','2019-08-02 09:50:11.5','2019-08-02 09:50:11.6','2019-08-02 09:50:11.8','2019-08-02 09:50:12.0'],
    'Value' : ['A','A','A','A','B','B','B','B'],
   })

df1 = pd.DataFrame(data=d1)

df1['Time'] = pd.to_datetime(df1['Time'])

df1['Time'] = df1.set_index('Time').resample('0.1S').ffill().reset_index()

Out:

ValueError: невозможно переиндексировать с дублирующейся оси

Предназначено:

                    Time Value
0  2019-08-02 09:50:11.5     A
1  2019-08-02 09:50:11.6     A
2  2019-08-02 09:50:11.7     A
3  2019-08-02 09:50:11.8     A
4  2019-08-02 09:50:11.9     A
5  2019-08-02 09:50:12.0     A                        
6  2019-08-02 09:50:11.5     B
7  2019-08-02 09:50:11.6     B
8  2019-08-02 09:50:11.7     B
9  2019-08-02 09:50:11.8     B
10  2019-08-02 09:50:11.9     B
11  2019-08-02 09:50:12.0     B

1 Ответ

2 голосов
/ 25 октября 2019

Используйте groupby и asfreq() для увеличения

d1 = ({   
    'Time' : ['2019-08-02 09:50:11.5','2019-08-02 09:50:11.6','2019-08-02 09:50:11.8','2019-08-02 09:50:12.0','2019-08-02 09:50:11.5','2019-08-02 09:50:11.6','2019-08-02 09:50:11.8','2019-08-02 09:50:12.0'],
    'Value' : ['A','A','A','A','B','B','B','B'],
   })

df1 = pd.DataFrame(data=d1)

df1['Time'] = pd.to_datetime(df1['Time'])

df1 = df1.set_index('Time')

df1 = df1.groupby('Value', group_keys=False).resample('0.1S').asfreq().ffill().reset_index()

df1

Out[1]: 
                      Time Value
0  2019-08-02 09:50:11.500     A
1  2019-08-02 09:50:11.600     A
2  2019-08-02 09:50:11.700     A
3  2019-08-02 09:50:11.800     A
4  2019-08-02 09:50:11.900     A
5  2019-08-02 09:50:12.000     A
6  2019-08-02 09:50:11.500     B
7  2019-08-02 09:50:11.600     B
8  2019-08-02 09:50:11.700     B
9  2019-08-02 09:50:11.800     B
10 2019-08-02 09:50:11.900     B
11 2019-08-02 09:50:12.000     B
...