У меня есть фрейм данных, содержащий различные данные, в том числе столбец из временной метки Linux. Для дальнейшего анализа мне нужно извлечь минуты каждого периода (число минут часа, число минут дня, число минут недели, число минут месяца, число минут года) из столбца Linux Timestamp.
У меня есть:
TimeStamp var1 var2
1659494100 5.22 6.34
1659494160 4.33 7.33
1659494220 5.46 7.21
1659494280 4.33 4.51
1659494340 6.45 5.67
...
Мне нужно иметь:
TimeStamp var1 var2 minute_of_hour minute_of_day minute_of_week minute_of_month minute_of_year
1659494100 5.22 6.34 35 155 3035 3035 308315
1659494160 4.33 7.33 36 156 3036 3036 308316
1659494220 5.46 7.21 37 157 3037 3037 308317
1659494280 4.33 4.51 38 158 3038 3038 308318
1659494340 6.45 5.67 39 159 3039 3039 308319
У меня большая таблица, и использование циклов не вариант. Есть ли у вас какие-либо идеи?
import pandas as pd
# Your dataframe here:
df = pd.DataFrame({
"Timestamp": [1659494100, 1659494160, 1659494220, 1659494280, 1659494340],
"var1": [5.22, 4.33, 5.46, 4.33, 6.45],
"var2": [6.34, 7.33, 7.21, 4.51, 5.67]
})
timestamps = pd.to_datetime(df["Timestamp"], unit = "s")
freqs = {
"hour": "H",
"day": "D",
"week": "W",
"month": "M",
"year": "Y"
}
for name, freq in freqs.items():
df[f"minute_of_{name}"] = (
timestamps - timestamps.dt.to_period(freq).dt.start_time
) // pd.Timedelta("1Min")
Выход:
Timestamp var1 var2 minute_of_hour minute_of_day minute_of_week \
0 1659494100 5.22 6.34 35 155 3035
1 1659494160 4.33 7.33 36 156 3036
2 1659494220 5.46 7.21 37 157 3037
3 1659494280 4.33 4.51 38 158 3038
4 1659494340 6.45 5.67 39 159 3039
minute_of_month minute_of_year
0 3035 308315
1 3036 308316
2 3037 308317
3 3038 308318
4 3039 308319
Обратите внимание, что некоторые столбцы могут быть рассчитаны более прямым образом, но этот метод делает код согласованным для всех частот.
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.