Не удалось изменить кадр данных панд - PullRequest
0 голосов
/ 10 октября 2018

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

Например,

             key                                              value
0     Message-ID       <5525962.1075855679785.JavaMail.evans@thyme>
1           Date              Wed, 13 Dec 2000 07:04:00 -0800 (PST)
2           From                            phillip.allen@enron.com
3             To  christi.nicolay@enron.com, james.steffes@enron...
4         X-From                                    Phillip K Allen
5           X-To  Christi L Nicolay, James D Steffes, Jeff Dasov...
6          X-cc:                                               None
7         X-bcc:                                               None
8       X-Origin                                            Allen-P
9     Message-ID       <4650921.1075855679981.JavaMail.evans@thyme>
10          Date               Tue, 5 Dec 2000 07:31:00 -0800 (PST)
11          From                               ina.rangel@enron.com
12            To                             amanda.huble@enron.com
13        X-From                                         Ina Rangel
14          X-To                                       Amanda Huble
15         X-cc:                                               None
16        X-bcc:                                               None
17      X-Origin                                            Allen-P

Я хочу преобразовать это в:

Message-ID       Date                  From             To        X-From                 X-To                            X-cc:  X-bcc:  X-Origin
<5525962.10...   Wed, 13 Dec 2000...   phillip.allen... christi.nicolay.. Phillip K Allen..     Christi L Nicolay, Ja... NaN    NaN     Allen-P
<4650921.10...   Tue, 5 Dec 2000 ...   ina.rangel...    amanda.huble@...  Ina Rangel            Amanda Huble             NaN    NaN     Allen-P

Я попытался повернуть таблицу, но я запутался в том, что я должен дать в качестве аргумента индекса.Пожалуйста, помогите мне решить эту проблему.

Не стесняйтесь пометить как дубликат, если найдете его.

1 Ответ

0 голосов
/ 10 октября 2018

Если в каждой группе всегда есть 9 значений, используйте numpy.reshape для 2d array с DataFrame конструктором, также для значений столбцов возьмите первые 9 значений столбца key:

print (df['value'].values.reshape(-1, 9))
[['<5525962.1075855679785.JavaMail.evans@thyme>'
  'Wed, 13 Dec 2000 07:04:00 -0800 (PST)' 'phillip.allen@enron.com'
  'christi.nicolay@enron.com, james.steffes@enron...' 'Phillip K Allen'
  'Christi L Nicolay, James D Steffes, Jeff Dasov...' 'None' 'None'
  'Allen-P']
 ['<4650921.1075855679981.JavaMail.evans@thyme>'
  'Tue, 5 Dec 2000 07:31:00 -0800 (PST)' 'ina.rangel@enron.com'
  'amanda.huble@enron.com' 'Ina Rangel' 'Amanda Huble' 'None' 'None'
  'Allen-P']]


df = pd.DataFrame(df['value'].values.reshape(-1, 9), columns=df['key'].iloc[:9])
print (df)
key                                    Message-ID  \
0    <5525962.1075855679785.JavaMail.evans@thyme>   
1    <4650921.1075855679981.JavaMail.evans@thyme>   

key                                   Date                     From  \
0    Wed, 13 Dec 2000 07:04:00 -0800 (PST)  phillip.allen@enron.com   
1     Tue, 5 Dec 2000 07:31:00 -0800 (PST)     ina.rangel@enron.com   

key                                                 To           X-From  \
0    christi.nicolay@enron.com, james.steffes@enron...  Phillip K Allen   
1                               amanda.huble@enron.com       Ina Rangel   

key                                               X-To X-cc: X-bcc: X-Origin  
0    Christi L Nicolay, James D Steffes, Jeff Dasov...  None   None  Allen-P  
1                                         Amanda Huble  None   None  Allen-P 

Если всегда возможна Message-ID строка данных для каждой группы, используйте set_index с помощником Series, созданным из cumsum логической маски - сравните с помощьюeq == для определения начала каждой группы:

df = df.set_index([df['key'].eq('Message-ID').cumsum(), 'key'])['value'].unstack()
print (df)
key                                   Date                     From  \
key                                                                   
1    Wed, 13 Dec 2000 07:04:00 -0800 (PST)  phillip.allen@enron.com   
2     Tue, 5 Dec 2000 07:31:00 -0800 (PST)     ina.rangel@enron.com   

key                                    Message-ID  \
key                                                 
1    <5525962.1075855679785.JavaMail.evans@thyme>   
2    <4650921.1075855679981.JavaMail.evans@thyme>   

key                                                 To           X-From  \
key                                                                       
1    christi.nicolay@enron.com, james.steffes@enron...  Phillip K Allen   
2                               amanda.huble@enron.com       Ina Rangel   

key X-Origin                                               X-To X-bcc: X-cc:  
key                                                                           
1    Allen-P  Christi L Nicolay, James D Steffes, Jeff Dasov...   None  None  
2    Allen-P                                       Amanda Huble   None  None  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...