Я пытаюсь оптимизировать некоторые скрипты преобразования таблиц в Python Pandas, которые я пытаюсь передать огромными наборами данных (более 50 тыс. Строк).Я написал скрипт, который просматривает каждый индекс и анализирует значения в новом фрейме данных (см. Пример ниже), но у меня возникают проблемы с производительностью.Есть ли какая-нибудь функция панд, которая могла бы получить те же результаты без итерации?
Пример кода:
from datetime import datetime
import pandas as pd
date1 = datetime(2019,1,1)
date2 = datetime(2019,1,2)
df = pd.DataFrame({"ID": [1,1,2,2,3,3],
"date": [date1,date2,date1,date2,date1,date2],
"x": [1,2,3,4,5,6],
"y": ["a","a","b","b","c","c"]})
new_df = pd.DataFrame()
for i in df.index:
new_df.at[df.at[i, "ID"], "y"] = df.at[i, "y"]
if df.at[i, "date"] == datetime(2019,1,1):
new_df.at[df.at[i, "ID"], "x1"] = df.at[i, "x"]
elif df.at[i, "date"] == datetime(2019,1,2):
new_df.at[df.at[i, "ID"], "x2"] = df.at[i, "x"]
output:
ID date x y
0 1 2019-01-01 1 a
1 1 2019-01-02 2 a
2 2 2019-01-01 3 b
3 2 2019-01-02 4 b
4 3 2019-01-01 5 c
5 3 2019-01-02 6 c
y x1 x2
1 a 1.0 2.0
2 b 3.0 4.0
3 c 5.0 6.0
Преобразование в основном группирует строкипо столбцу «ID» и получает значения «x1» из строк с датой 2019-01-01 и значения «x2» из строк с датой 2019-01-02.Значение «y» одинаково в пределах одного и того же «ID».Столбцы «ID» становятся новыми индексами.
Буду признателен за любые советы по этому вопросу.