Python 限制数据透视中的列值
假设我有一些索引映射到键值对的数据,如下所示:Python 限制数据透视中的列值,python,pandas,Python,Pandas,假设我有一些索引映射到键值对的数据,如下所示: # 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+') 如果我使用Pa
# 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,我可以将标志
列中的所有因子转换为单独的列:
df2 = df1.pivot(index = 'ID', columns = 'Flag', values = 'Value')
但是,这使我能够将所有键映射到单独的列,如下所示:
Flag Category End Start Type
ID
0 Animal 13 10 Cat
我的问题是,我如何限制标志
列中的因素/类别,即只包括类别
和类型
,而不必手动删除列?换言之:
Flag Category Type
ID
0 Animal Cat
我问这个问题的原因是因为我正在处理的数据集有近1000个键值对,所以手动删除重新整形的列肯定不是一个有吸引力的选择 您可以使用进行筛选,以便只获取您感兴趣的值:
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