リストに基づいてデータフレームからいくつかのデータを選択したい。私はこれを含む卑劣な質問を参照しました。私の「df2」は次のようなものです:
col1 col2 session_number col3 col4 session
0 1.1 A 0 1.1 X 1
1 1.1 A 1 1.7 X 2
2 1.1 A 2 2.5 Y 3
3 2.6 B 0 2.6 Y 7
4 2.5 B 0 3.3 Z 5
「col2」と「session」を別のデータフレームにグループ化したい。
df3 = pd.DataFrame({'count' : df2.groupby( ["col2","session"] ).size()}).reset_index()
私のdf3は次のようになります:
col2 session count
0 A 1 1
1 A 2 1
2 A 3 1
3 A 6 1
4 B 5 1
5 B 7 1
ここで、col2='D' のセッション値を見つけたいと思います (データフレームの一部しか配置していないため、これらの値はここにはありません)。
li = []
li.append(df3[df3.col2 == 'D' ]['session'].values)
次に、df2 に戻り、「li」のセッション値に対応する「col1」値を取得します。
print df2[df2['session'].isin(li)]['col1'].unique()
次のエラーが発生します。
Traceback (most recent call last):
File "/home/nilani/Desktop/testingSessions.py", line 40, in <module>
print df2[df2['session'].isin(li)]['col1'].unique()
File "/usr/local/lib/python2.7/dist-packages/pandas-0.11.0-py2.7-linux-x86_64.egg/pandas/core/series.py", line 2785, in isin
value_set = set(values)
TypeError: unhashable type: 'numpy.ndarray'
しかし、次のように「li」内で値を使用すると、エラーが発生せず、出力が正しく出力されます。
print df2[df2['session'].isin([ 4, 10])]['col1'].unique()
ここで何が問題なのですか?