Вставьте список зацикливания в кадр данных pandas - PullRequest
0 голосов
/ 09 октября 2019

У меня есть список, созданный внутри операции цикла. В каждом цикле, если я распечатываю список, то получаю так:

[('E', 5), ('B', 3), ('C', 2)]


[('B', 5), ('D', 3), ('C', 2), ('A', 1), ('E', 7)]

У меня есть пустой кадр данных со столбцами как A, B, C, D, E.

Как можноЯ вставляю этот генерирующий список в фрейм данных как строку, соответствующую имени столбца. Список, сгенерированный в каждом цикле, может иметь не все значения столбца. Это необходимо заменить на 0.

Код:

for document in myCorpus:
transform = tfidfCategory.transform([document])
for value in document.split():
    score[value] = transform[0, tfidfCategory.vocabulary_[value]]
scoreValue = sorted(score.items(), key=operator.itemgetter(1), reverse=True)
print ("\t", scoreValue)
print()

Выходной код выше:

[('E', 5), ('B', 3), ('C', 2)]
[('B', 5), ('D', 3), ('C', 2), ('A', 1), ('E', 7)]

Желаемый выходной кадр данных:

A  B  C  D  E       
0  3  2  0  5        
1  5  2  3  7  

Пожалуйста, помогите!

С уважением, Sudeep

Ответы [ 2 ]

1 голос
/ 09 октября 2019
a_list=[('E', 5), ('B', 3), ('C', 2)]

new_row = pd.Series()

map = {"A": 0, "B": 0, "C": 0, "D":0, "E":0}

for a in a_list:
    map[a[0]] =a[1]
new_row = pd.Series(map)
df = df.append(new_row, ignore_index=True)

Итак, мы инициализируем карту на 0, а затем заполняем нужное значение на карте. используя это, создайте новую строку и добавьте в df. PS: - Вам нужно создать новую карту для каждого списка.

0 голосов
/ 09 октября 2019

IIUC, вы можете попробовать concat при понимании списка:

scoreValue = [[('E', 5), ('B', 3), ('C', 2)],
              [('B', 5), ('D', 3), ('C', 2), ('A', 1), ('E', 7)]]

pd.concat([pd.DataFrame(s).set_index(0).T for s in scoreValue], sort=True)

Вывод:

     A  B  C    D  E
1  NaN  3  2  NaN  5
1  1.0  5  2  3.0  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...