根据列中的唯一值创建较小的数据帧


animals = pd.DataFrame({'animal': ['Dog','Cat','Cat','Cat','Dog','Dog','Cat','Dog','Cat','Cat','Dog','Dog','Cat'],
'age':[2,1,5,7,5,3,4,6,6,9,3,2,10],
'weight':[10,4,3,15,12,5,6,3,7.1,10,12,6,4],
'length':[1,0.45,0.49,0.50,1.2,1.16,0.40,1.2,0.45,0.50,0.75,1.1,0.43]})

假设我有这样一个数据帧,我想创建一个较小的猫及其年龄的数据帧,以了解如何完成

你可以做:

res = animals[animals['animal'].eq('Cat')].sort_values(by='age')
print(res)

输出

animal  age  weight  length
1     Cat    1     4.0    0.45
6     Cat    4     6.0    0.40
2     Cat    5     3.0    0.49
8     Cat    6     7.1    0.45
3     Cat    7    15.0    0.50
9     Cat    9    10.0    0.50
12    Cat   10     4.0    0.43

如果你只想要年龄和动物栏,可以:

res = animals[animals['animal'].eq('Cat')].filter(items=['animal', 'age']).sort_values(by='age')
print(res)

输出

animal  age
1     Cat    1
6     Cat    4
2     Cat    5
8     Cat    6
3     Cat    7
9     Cat    9
12    Cat   10

您只需要过滤掉不包含"Cat"的其余行:

animals = pd.DataFrame({'animal': ['Dog','Cat','Cat','Cat','Dog','Dog','Cat','Dog','Cat','Cat','Dog','Dog','Cat'],
'age':[2,1,5,7,5,3,4,6,6,9,3,2,10],
'weight':[10,4,3,15,12,5,6,3,7.1,10,12,6,4],
'length':[1,0.45,0.49,0.50,1.2,1.16,0.40,1.2,0.45,0.50,0.75,1.1,0.43]})
animals = animals[animals['animal'] == 'Cat'].sort_values(['age'])
animals
>>>
animal  age   weight    length
1   Cat     1       4.0     0.45
6   Cat     4       6.0     0.40
2   Cat     5       3.0     0.49
8   Cat     6       7.1     0.45
3   Cat     7       15.0    0.50
9   Cat     9       10.0    0.50
12  Cat     10      4.0     0.43

只获取相关数据("年龄"one_answers"年龄"(:

animals[['animal','age']]
>>> animal  age 
1   Cat 1   4.0 
6   Cat 4   6.0 
2   Cat 5   3.0 
8   Cat 6   7.1 
3   Cat 7   15.0
9   Cat 9   10.0
12  Cat 10  4.0 

您可以在此处使用df.query

df.query("animal=='Cat'").sort_values('age')
# Alternative
# df.query("animal.eq('Cat')").sort_values('age')
animal  age  weight  length
1     Cat    1     4.0    0.45
6     Cat    4     6.0    0.40
2     Cat    5     3.0    0.49
8     Cat    6     7.1    0.45
3     Cat    7    15.0    0.50
9     Cat    9    10.0    0.50
12    Cat   10     4.0    0.43

如果您只想要animalage

df[['animal', 'age']].query("animal=='Cat'").sort_values('age')
animal  age
1     Cat    1
6     Cat    4
2     Cat    5
8     Cat    6
3     Cat    7
9     Cat    9
12    Cat   10

最新更新