Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制数据透视中的列值_Python_Pandas - Fatal编程技术网

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