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