从pandas dataframe中制作2d数组

时间:2013-11-07 04:50:58

标签: python arrays pandas

我在这里有一个大熊猫数据框,有两列:参与者姓名和反应时间(注意一个参与者有更多的措施哦他的RT)。

    ID RT
0  foo  1
1  foo  2
2  bar  3
3  bar  4
4  foo  1
5  foo  2
6  bar  3
7  bar  4
8  bar  4

我想从这里得到一个二维数组,其中每一行都包含一个参与者的反应时间。

[[1,2,1,2]
[3,4,3,4,4]]

如果不可能有这样的形状,那么获得良好的x b形状的以下选项对我来说是可以接受的:用NaN填充缺少的元素;将较长的行截断为较短行的大小;用重复的平均值填充较短的行。

我会选择最容易实施的任何内容。

我试图通过使用groupby来解决这个问题,我希望它很容易做到这一点,但这一切都变得非常糟糕:(

1 个答案:

答案 0 :(得分:3)

import pandas as pd
import io
data = io.BytesIO("""    ID RT
0  foo  1
1  foo  2
2  bar  3
3  bar  4
4  foo  1
5  foo  2
6  bar  3
7  bar  4
8  bar  4""")

df = pd.read_csv(data, delim_whitespace=True)
df.groupby("ID").RT.apply(pd.Series.reset_index, drop=True).unstack()

输出:

    0  1  2  3   4
ID                 
bar  3  4  3  4   4
foo  1  2  1  2 NaN
相关问题