Как добавить столбцы в Pandas DataFrame с минутами дня, месяца, года, используя отметку времени из другого столбца?

У меня есть фрейм данных, содержащий различные данные, в том числе столбец из временной метки 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

У меня большая таблица, и использование циклов не вариант. Есть ли у вас какие-либо идеи?

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Сергей Кох 24.11.2022 21:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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  

Обратите внимание, что некоторые столбцы могут быть рассчитаны более прямым образом, но этот метод делает код согласованным для всех частот.

Другие вопросы по теме