#python #pandas #for-loop
#python #pandas #цикл for
Вопрос:
У меня есть фрейм данных pandas, где я хочу отфильтровать 10 разных фреймов данных на основе уникальных значений в столбце. У меня есть список этих значений, и я хотел бы динамически называть каждый отфильтрованный фрейм данных именем, по которому он фильтруется.
Вот несколько примеров кода:
import pandas as pd
df = {'value':[1,1,1,1,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5,5],
'value2':['a','a','a','a','b','b','c','c','c','c','c','c','c','d','d','d','d','e','e','e','e','e','e','e']}
df1 = pd.DataFrame(df)
value2 = ['a','b','c','d','e']
for value in value2:
value = df1[df1['value2'] == value]
Таким образом, конечным результатом будет пять фреймов данных, названных для каждого значения в list
значении2, отфильтрованных по всем наблюдениям из df1, которые также относятся к значению2.
Комментарии:
1. Разве это не то же самое, что
df.groupby("value2")
?
Ответ №1:
Было бы проще создать словарь:
dfs = {}
for value in value2:
dfs[value] = df1[df1['value2'] == value]
Затем, если вы хотите получить к ним доступ извне, вы можете просто запросить dfs[value]
.