我是 python 的新手,我希望能在这里得到一些帮助。
我想使用
pd.pivot_table
将我的数据从长格式转换为宽格式。
我的数据是这样的:
TimeStamp [us] Source Channel Label Value [pV] Spike
0 1 A1 0 0
1 2 A1 -1400 1
2 3 A1 0 0
3 1 B1 -1400 1
4 2 B1 0 0
5 3 B1 0 0
我想要这样
TimeStamp [us] 1 2 3
Source Channel Label
A1 0.0 1.0 0.0
B1 1.0 0.0 0.0
[此处重现一些代码:]
#read in example
example_1 = {'TimeStamp [us]': ["1", "2", "3", "1", "2", "3",],
'Source Channel Label': ["A1", "A1", "A1","B1", "B1", "B1"],
'Value [pV]': ["0", "-1400", "0","-1400", "0", "0"],
'Spike': ["0", "1", "0", "1","0", "0"]}
#convert to dataframe
example_1 = pd.DataFrame(example_1)
#convert to wide format - works
example_wide = pd.pivot_table(example_1, index='Source Channel Label', columns = 'TimeStamp [us]',values = 'Spike') #Reshape from long to wide
print(example_wide)
在这个例子中它工作正常。但是,当我在我的真实数据上使用此代码时(请参见下面的示例),会引入许多 NaN。任何想法为什么以及最重要的是如何解决它?
TimeStamp [µs] Source Channel Label Value [pV] Spike
0 402600 F10 0 0.0
1 402700 F10 0 0.0
2 402800 F10 0 0.0
3 402900 F10 0 0.0
4 403000 F10 -149012 1.0
... ... ... ...
845142 299700800 G10 0 0.0
845143 299700900 G10 0 0.0
845144 299701000 G10 0 0.0
845145 299701100 G10 0 0.0
845146 299701200 G10 0 0.0
[825902 rows x 4 columns]
转换为宽:
week6_233C_1_wide = pd.pivot_table(week6_233C_1, index='Source Channel Label', columns = 'TimeStamp [µs]',values = 'Spike') #Reshape from long to wide
TimeStamp [µs] 1000 10000 100000 ... 99999300 99999400 99999500
Source Channel Label ...
A1 NaN NaN NaN ... NaN NaN NaN
A10 NaN NaN NaN ... 0.0 0.0 0.0
A2 NaN NaN NaN ... NaN NaN NaN
A3 NaN NaN NaN ... NaN NaN NaN
A4 NaN NaN NaN ... NaN NaN NaN
... ... ... ... ... ... ...
M5 NaN NaN NaN ... NaN NaN NaN
M6 NaN NaN NaN ... NaN NaN NaN
M7 NaN NaN NaN ... NaN NaN NaN
M8 NaN NaN NaN ... NaN NaN NaN
M9 NaN NaN NaN ... NaN NaN NaN
[114 rows x 528921 columns]