Я работаю с pandas DataFrame, и один из столбцов является словарем. Мне нужно получить список, содержащий значение, соответствующее определенному ключу для каждой строки DataFrame.
df = pd.DataFrame({
'col1': [{'id': 1, 'value': 3}, {'id': 2, 'value': 25}]
})
col1
0 {'id': 1, 'value': 3}
1 {'id': 2, 'value': 25}
Мне удалось получить желаемый результат, используя метод apply()
и лямбда-функцию, создав новый столбец и заполнив его указанным значением для каждой строки, а затем взяв эту серию в виде списка и удалив временный столбец. Есть ли более простой способ сделать это?
Для этого примера данных вывод будет
[3, 25]
.str
, несмотря на свое название, работает не только со строками, но и со списками и объектами:
vals = df['col1'].str['value']
Выход:
>>> vals
0 3
1 25
Name: col1, dtype: int64
>>> vals.tolist()
[3, 25]
К сожалению нет. Если вы хотите изучить тот, задайте вопрос новый. :)
Это также работает с атрибутом объекта? Например, если бы я хотел вызвать атрибут
.value
класса в'col1'
.