我在这里有一个大熊猫数据框,有两列:参与者姓名和反应时间(注意一个参与者有更多的措施哦他的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来解决这个问题,我希望它很容易做到这一点,但这一切都变得非常糟糕:(
答案 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