2

我有一个熊猫表 df:

           course
ID
1      physics101
1       astronomy     
2           maths
2         another

我想派生一个具有以下结果的表:

         physics101    astronomy     maths    another
ID
1              True         True    False        False
2             False        False     True         True

是什么样的操作?

(df的元素是一组定义的类)

4

2 回答 2

3

您可以使用crosstab()

import pandas as pd
from StringIO import StringIO
data = StringIO("""ID       course
1      physics101
1       astronomy     
2           maths
2         another""")
df = pd.read_csv(data, delim_whitespace=True)
pd.crosstab(df.ID, df.course) > 0

输出:

course another astronomy  maths physics101
ID                                        
1        False      True  False       True
2         True     False   True      False
于 2013-08-02T06:52:04.843 回答
1

不确定这是否是最好的方法,请尝试pivot_table

In [65]: pd.pivot_table(df.reset_index(), rows='ID', \
                        cols='course', aggfunc=lambda x:True, fill_value=False)
Out[65]: 
course another astronomy  maths physics101
ID                                        
1        False      True  False       True
2         True     False   True      False
于 2013-08-02T06:37:16.173 回答