0

我在这里有一个熊猫数据框,有两列:参与者姓名和反应时间(请注意,一位参与者有更多的措施哦,他的 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]]

如果不可能有这样的形状,我可以接受以下获得良好 axb 形状的选项:用 NaN 填充缺失的元素;将较长的行截断为较短行的大小;用它们的平均值重复填充较短的行。

我会选择最容易实现的东西。

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

4

1 回答 1

4
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
于 2013-11-07T05:10:06.227 回答