假设我有一些数据的索引映射到键值对,如下所示:
# create fake data
import pandas as pd
from StringIO import StringIO
data = '''
ID Time Flag Value
0 1:10 Start 10
0 1:11 Category Animal
0 1:13 Type Cat
0 1:13 End 13
'''
df1 = pd.read_table(StringIO(data),sep='\s+')
如果我使用Pandas Pivot,我可以将Flag
列中的所有因素转换为单独的列:
df2 = df1.pivot(index = 'ID', columns = 'Flag', values = 'Value')
然而,这给了我所有键映射到单独的列,如下所示:
Flag Category End Start Type
ID
0 Animal 13 10 Cat
我的问题是,如何限制Flag
列中的因子/类,仅包括Category
和Type
,而无需手动删除列?换句话说:
Flag Category Type
ID
0 Animal Cat
我问的原因是因为我正在处理的数据集已接近~1000个键值对,因此手动删除重新整形的列绝对不是一个有吸引力的选项。
答案 0 :(得分:1)
您可以使用isin
进行过滤,以便只获得您感兴趣的值:
In [142]:
categories = ['Category', 'Type']
df2 = df1[df1['Flag'].isin(categories)].pivot(index = 'ID', columns = 'Flag', values = 'Value')
df2
Out[142]:
Flag Category Type
ID
0 Animal Cat