Вычтите столбец в кадре данных pandas по его первому значению
Мне нужно вычесть все элементы в одном столбце pandas dataframe по его первому значению.
В этом коде панды жалуются на self.inferred_type, который, я думаю, является циклической ссылкой.
df.Time = df.Time - df.Time[0]
И в этом коде панды жалуются на установку значения на копиях.
df.Time = df.Time - df.iat[0,0]
Как правильно сделать это вычисление в Пандах?
1 ответ
Решение
Я думаю, что вы можете выбрать первый элемент в столбце Time
от iloc
:
df.Time = df.Time - df.Time.iloc[0]
Образец:
start = pd.to_datetime('2015-02-24 10:00')
rng = pd.date_range(start, periods=5)
df = pd.DataFrame({'Time': rng, 'a': range(5)})
print (df)
Time a
0 2015-02-24 10:00:00 0
1 2015-02-25 10:00:00 1
2 2015-02-26 10:00:00 2
3 2015-02-27 10:00:00 3
4 2015-02-28 10:00:00 4
df.Time = df.Time - df.Time.iloc[0]
print (df)
Time a
0 0 days 0
1 1 days 1
2 2 days 2
3 3 days 3
4 4 days 4
Обратите внимание:
У меня отлично работает и ваши 2 пути.