Развернуть элементы столбца - PullRequest
0 голосов
/ 22 января 2020

У меня есть такой столбец данных:

dataframe['entries_from'][0]

[{'trackable_name': 'Grinding Teeth',
  'trackable_type': 'Symptom',
  'trackable_value': '2'},
 {'trackable_name': 'Hip pain',
  'trackable_type': 'Symptom',
  'trackable_value': '3'},
 {'trackable_name': 'Ankle pain',
  'trackable_type': 'Symptom',
  'trackable_value': '2'},
 {'trackable_name': 'Rib pain',
  'trackable_type': 'Condition',
  'trackable_value': '4'},
 {'trackable_name': 'Mental fatigue',
  'trackable_type': 'Weather',
  'trackable_value': '2'},
 {'trackable_name': 'Chronic pain',
  'trackable_type': 'Treatment',
  'trackable_value': '4'}]

Я хочу расширить этот столбец и добавить новые столбцы в существующий фрейм данных.

Symptom                                Treatment      Weather          Condition
Grinding Teeth, Hip pain, Ankle pain   Chronic pain   Mental Fatigue   Rib pain

Я написал

for index, row in dataframe['entries_from'].items():
  for d in row:
    for key, value in d.items():
      if value == 'Symptom':
        dataframe['Symptom_from'] = d.get("trackable_name")

но получил такой результат

0       Unwanted Thoughts
1       Unwanted Thoughts
2       Unwanted Thoughts
3       Unwanted Thoughts
4       Unwanted Thoughts
              ...        
8565    Unwanted Thoughts
8566    Unwanted Thoughts
8567    Unwanted Thoughts
8568    Unwanted Thoughts
8569    Unwanted Thoughts
Name: Symptom_from, Length: 8570, dtype: object

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 22 января 2020

Вы правы по большей части. Создайте временный list, чтобы собрать все Symptoms из list из dict.

for index, row in dataframe['entries_from'].items():
    symptoms = []
    for d in row:
        for key, value in d.items():
            if value == 'Symptom':
                symptoms.append( d.get("trackable_name"))
            elif value == 'Condition':
                dataframe['Condition'] =  d.get("trackable_name")
            elif value == 'Weather':
                dataframe['Weather'] =  d.get("trackable_name")
            elif value == 'Treatment':
                dataframe['Treatment'] =  d.get("trackable_name")
        dataframe['Symptom_from'] = str(symptoms)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...