我正在尝试通过函数将df元组的熊猫列表转换为len个独立的DataFrame。我发现了一个简单的示例DataFrame,它由不同的动物类型组成。我不想以元组格式创建DataFrames列表,而是希望将它们推出到单独的DataFrames表(而不是元组等)中,而不用一一调用df的位置(即animals[0]
),因为我不知道任何给定列表将持续多长时间。有什么建议吗?
import pandas as pd
df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
'size': list('SSMMMLL'),
'weight': [8, 10, 11, 1, 20, 12, 12],
'adult': [False] * 5 + [True] * 2})
我检查了df:
df
animal size weight adult
0 cat S 8 False
1 dog S 10 False
2 cat M 11 False
3 fish M 1 False
4 dog M 20 False
5 cat L 12 True
6 cat L 12 True
然后我通过按'animal'
分组将df分为三个较小的df:
animals = list(df.groupby('animal'))
for a in animals:
print(a, end='\n\n')
('cat', animal size weight adult
0 cat S 8 False
2 cat M 11 False
5 cat L 12 True
6 cat L 12 True)
('dog', animal size weight adult
1 dog S 10 False
4 dog M 20 False)
('fish', animal size weight adult
3 fish M 1 False)
接下来,我确认动物是否确实是列表:
type(animals)
list
然后我尝试提取动物列表中的第一项,只是发现列表的第一项是元组而不是DataFrame:
animals[0]
('cat', animal size weight adult
0 cat S 8 False
2 cat M 11 False
5 cat L 12 True
6 cat L 12 True)
type(animals[0])
tuple
有没有办法为猫,狗和鱼推出单独的DataFrame表,而不用一个一个地调用它们?在我的实际应用程序中,我无法预期将从DataFrame元组列表中生成的表的数量。
答案 0 :(得分:3)
每个元素都是一个.remove
key/value
,每个键都是由于tuple
而产生的分组键。而是从GroupBy
对象构建一个tuple
,并使用它来构建字典:
groupby
然后通过分组键访问元素:
animals = dict(tuple(df.groupby('animal')))
答案 1 :(得分:2)
只需使用
<form [formGroup]="myForm">
Name: <input type="text" formControlName="myName">
<div tabindex="-1" (focusout)="genderFocused = false">
Gender: <input type="text" formControlName="myGender" (focus)="genderFocused = true">
<label>Yes<input type="radio"></label>
<label>No<input type="radio"></label>
</div>
</form>
OR
animals = {}
for name, group in df.groupby('animal'):
animals[name] = group
print(animals['cat'])
或者如果您想访问特定的组(我认为这是最好的)
animals = {name: group for name, group in df.groupby('animal')}
名称将是组的名称,即狗,猫等,而组将是数据框。