Вопрос или проблема
У меня есть датафрейм с 50000 строк и 5 столбцов.
В столбце VarName есть два типа данных: 1 – DatiStatistica_CombiWeight, 2 – DatiStatistica_TargetWeight
Я отфильтровал строки, содержащие DatiStatistica_TargetWeight
Я хотел бы разделить датафрейм на основе строк, содержащих данные DatiStatistica_TargetWeight, следующим образом: строки между двумя строками, содержащими DatiStatistica_TargetWeight, формируют отдельный датафрейм.
Ответ или решение
Для решения вашей задачи по разделению DataFrame на основе содержимого строк, вам необходимо выполнить несколько шагов с использованием библиотеки pandas в Python. Я объясню весь процесс поэтапно.
- Импортирование библиотек:
Убедитесь, что у вас установлен пакет pandas. Если нет, установите его с помощью команды pip install pandas
. Затем импортируйте pandas в вашем Python-скрипте:
import pandas as pd
- Создание примера DataFrame:
Предположим, у вас есть DataFrame с названием df
:
data = {
'VarName': ['DatiStatistica_CombiWeight', 'some_data_1', 'some_data_2', 'DatiStatistica_TargetWeight',
'some_data_3', 'some_data_4', 'DatiStatistica_TargetWeight', 'some_data_5',
'DatiStatistica_CombiWeight'],
'Value1': [1, 2, 3, 4, 5, 6, 7, 8, 9],
'Value2': [10, 20, 30, 40, 50, 60, 70, 80, 90],
'Value3': [100, 200, 300, 400, 500, 600, 700, 800, 900],
'Value4': [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000]
}
df = pd.DataFrame(data)
- Фильтрация строк:
Сначала отфильтруйте строки, содержащие DatiStatistica_TargetWeight
, и получите индексы, на которых они находятся:
target_weight_indices = df[df['VarName'] == 'DatiStatistica_TargetWeight'].index
- Создание нового DataFrame:
Теперь вы можете использовать индексы для извлечения подмассивов между строками, содержащими DatiStatistica_TargetWeight
. Вам нужно будет перебрать полученные индексы и извлечь строки между ними:
dataframes = []
for i in range(len(target_weight_indices) - 1):
start = target_weight_indices[i] + 1
end = target_weight_indices[i + 1]
new_df = df.iloc[start:end]
dataframes.append(new_df)
- Вывод результатов:
Теперь у вас есть список DataFrame, каждый из которых содержит строки между DatiStatistica_TargetWeight
:
for idx, dataframe in enumerate(dataframes):
print(f"DataFrame {idx + 1}:")
print(dataframe)
Этот код последовательно создаст список DataFrame, каждый из которых будет представлять собой фрагменты вашего основного DataFrame, находящиеся между строками, содержащими DatiStatistica_TargetWeight
.
Таким образом, вы можете легко разделить ваш DataFrame на несколько частей в зависимости от содержимого строк.