Мой вопрос является продолжением вопроса, который я задал на прошлой неделе .
У меня есть данные, которые были представлены в виде list
словарей. Значения словарей: list
из int
значений различной длины. Они находятся в pandas
DataFrame
с именем df_sim
(имя столбца rrintervals
)
startedat rrintervals
0 2020-02-27 15:06:35 [{'values': [727.0]}, {'values': [693.0, 688.0...
1 2020-02-27 15:06:22 [{'values': [1067.0]}, {'values': [921.0]}, {'...
2 2020-02-27 15:36:52 [{'values': [776.0]}, {'values': [826.0, 938.0..
IN:
print(df_sim.loc[0, "rrintervals"])
OUT:
[{'values': [727.0]}, {'values': [693.0, 688.0]}, {'values': [689.0]}, {'values': [699.0]}]
Я хотел бы получить все значения dict в столбце rrintervals
в один список, и я хочу для сохранения в новом столбце в df_sim
, который называется rr_list
.
startedat rrintervals rr_list
0 2020-02-27 15:06:35 [{'values': [727.0]}, {'values': [693.0, 688.0... [727.0, 693.0, 688.0...]
1 2020-02-27 15:06:22 [{'values': [1067.0]}, {'values': [921.0]}, {'... [1067.0, 921.0...]
2 2020-02-27 15:36:52 [{'values': [776.0]}, {'values': [826.0, 938.0.. [776.0, 826.0, 938.0...]
IN:
print(df_sim.loc[0, "rr_list"])
OUT:
[727.0, 693.0, 688.0, 689.0, 699.0]
Я попытался применить лучший ответ из моего последнего вопроса, в котором рекомендовалось использовать понимание списка
for i in df_sim.index:
df_sim.loc[i, "rr_list"] = [val for sub_dict in df_sim.loc[i, "rrintervals"] for val in sub_dict['values']]
Но я продолжал получать ValueError
:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-152-c50bd1585f57> in <module>
1 for i in df_sim.index:
----> 2 df_sim.loc[i, "rr_list"] = [val for sub_dict in df_sim.loc[i, "rrintervals"] for val in sub_dict['values']]
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in __setitem__(self, key, value)
668 key = com.apply_if_callable(key, self.obj)
669 indexer = self._get_setitem_indexer(key)
--> 670 self._setitem_with_indexer(indexer, value)
671
672 def _validate_key(self, key, axis: int):
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
1015 if len(labels) != len(value):
1016 raise ValueError(
-> 1017 "Must have equal len keys and value "
1018 "when setting with an iterable"
1019 )
ValueError: Must have equal len keys and value when setting with an iterable