Python 重塑数据帧失败

Python 重塑数据帧失败,python,pandas,Python,Pandas,我想重塑我的数据帧,它只有键值对 比如说, key value 0 Message-ID <5525962.1075855679785.JavaMail.evans@thyme> 1 Date Wed, 13 Dec 2000 07:04:00 -0800 (PST) 2 From

我想重塑我的数据帧,它只有键值对

比如说,

             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
键值
0消息ID
日期2000年12月13日星期三07:04:00-0800(太平洋标准时间)
菲利浦发来的2封信。allen@enron.com
3给克里斯蒂。nicolay@enron.com,詹姆斯。steffes@enron...
Phillip K Allen的4X
给克里斯蒂·L·尼科莱,詹姆斯·D·斯蒂夫,杰夫·达索夫。。。
6 X-cc:无
7 X-bcc:无
8 X-Origin Allen-P
9消息ID
10日期星期二,2000年12月5日07:31:00-0800(太平洋标准时间)
11来自伊纳。rangel@enron.com
12给阿曼达。huble@enron.com
来自伊娜·兰格尔的13张X光照片
14 X-给阿曼达·哈勃
15 X-cc:无
16 X-bcc:无
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
Message ID Date From To X-From X-To X-cc:X-bcc:X-Origin

如果每组始终有9个值,则可将
2d数组
DataFrame
构造函数一起使用,也可将列值取列
键的前9个值:

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 

为什么不将关键列设置为索引,并简单地转置df?@David-我尝试了你的建议,T的问题是n列,其中n代表行数。是的,我忘了提到,我的组正好有9行,它可以按照我的意愿工作,你能在其中添加一些细节吗(它是如何工作的?)。@MohamedThasinah-我尝试,它可以吗?为什么重塑从-1开始?@MohamedThasinah-是的,它的意思是像
推断
,所以它按行数计数。检查中的最后一个示例
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