словарь панд к списку словарных ключей / значений - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь выполнить понимание списка со вложенным списком словаря из фрейма данных, и я получаю это после некоторых попыток. Есть ли какая-то функциональность панд, которую мне может не хватать, чем использовать для циклов?

file = ['a.txt','a.txt','b.txt','c.txt']
year = ['2016','2017','2016','2018']
paper = ['Biology','Biology','Math','English']
name = ['Ann,Matt','Maya','Rob',np.nan]

df = pd.DataFrame({
                'file':file,
                'year':year,
                'paper':paper,
                'name':name
            })
df


dfd = df.to_dict('index')
dfd
>>>
{0: {'file': 'a.txt', 'year': '2016', 'paper': 'Biology', 'name': 'Ann,Matt'},
 1: {'file': 'a.txt', 'year': '2017', 'paper': 'Biology', 'name': 'Maya'},
 2: {'file': 'b.txt', 'year': '2016', 'paper': 'Math', 'name': 'Rob'},
 3: {'file': 'c.txt', 'year': '2018', 'paper': 'English', 'name': nan}}

Попытка:

d = []
for i in dfd.items():
    d.append(i)

>>>
[(0,
  {'file': 'a.txt', 'year': '2016', 'paper': 'Biology', 'name': 'Ann,Matt'}),
 (1, {'file': 'a.txt', 'year': '2017', 'paper': 'Biology', 'name': 'Maya'}),
 (2, {'file': 'b.txt', 'year': '2016', 'paper': 'Math', 'name': 'Rob'}),
 (3, {'file': 'c.txt', 'year': '2018', 'paper': 'English', 'name': nan})]

Я пытаюсь получить это так: в формате кортежей.

[{'file': 'a.txt', 'year': '2016', 'paper': 'Biology', 'name': 'Ann,Matt'},
 {'file': 'a.txt', 'year': '2017', 'paper': 'Biology', 'name': 'Maya'},
 {'file': 'b.txt', 'year': '2016', 'paper': 'Math', 'name': 'Rob'},
 {'file': 'c.txt', 'year': '2018', 'paper': 'English', 'name': nan}]

1 Ответ

1 голос
/ 24 октября 2019

Вы почти правильно поняли выше. Вы можете использовать dfd.items (), чтобы перебирать и ключи, и значения сразу из вашего dfd. Затем вы можете проигнорировать ключевую часть кортежа и просто добавить значение к пониманию списка следующим образом:

d = [v for k,v in dfd.items()]

Только что проверили это с данными, и вы получите желаемый результат

...