как превратить список кортежей во фрейм данных с разными баллами - PullRequest
0 голосов
/ 25 марта 2020

У меня есть такие данные, которые были получены от модели LDA от Gensim

date       id   score   
1/1/2019    11  [(5,0.8), (11,0.2)] 
1/2/2019    21  [(4,0.7), (10,0.1)] 
1/3/2019    35  [(3,0.4)]   
1/4/2019    44  [(5,0.8),(3,0.5), (11,0.2)] 

Результаты должны быть такими. Кто-нибудь может помочь?

date        id  score   new_score
1/1/2019    11  5       0.8
1/1/2019    11  11      0.2
1/2/2019    21  4       0.7
1/2/2019    21  10      0.1
1/3/2019    35  3       0.4
1/4/2019    44  5       0.8
1/4/2019    44  3       0.5
1/4/2019    44  11      0.2

1 Ответ

0 голосов
/ 25 марта 2020

Обновление:

Лучшим способом является использование DataFrame.explode():

df = pd.read_csv('your_file_name.csv')

df = df.explode('score')
df[['score', 'new_score']] = df.score.apply(pd.Series)

Вы можете сделать это с пониманием вложенного списка:

df = pd.read_csv('your_file_name.csv')

unpacked = [
    {'date': row.date, 'id': row.id, 'score': x[0], 'new_score': x[1]} 
    for _, row in df.iterrows() for x in row.score
]

df = pd.DataFrame(unpacked)

DataFrame.iterrows() возвращает кортеж индекса и содержимое строки для каждой строки в фрейме, поэтому вы можете систематически распаковывать ее:

  1. захватить одну строку
  2. распакуйте кортеж партитуры в партитуру, а new_score
  3. отформатируйте его как записи в словаре (вместе с датой и идентификатором), чтобы построить новый фрейм из
  4. , выполнить итерацию по всем строкам и построить финальный файл. кадр
...