0

ここに pandas データフレームがあり、参加者名と反応時間の 2 つの列があります (1 人の参加者は 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,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 に答える