假设我有一个数据框,其中列中有不同的值,例如
CType(prizeWheel, RotateTransform)
如何创建新的数据框,其中每个数据框只包含USA的值,只包含UK的值,而只包含France的值?但事情就是这样,说“我不知道如何指定像
这样的条件。”不想要
raw_data = {'first_name': ['Jason', 'Molly', np.nan, np.nan, np.nan],
'nationality': ['USA', 'USA', 'France', 'UK', 'UK'],
'age': [42, 52, 36, 24, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'nationality', 'age'])
df
我希望无论国籍是什么,都要为每个国籍汇总所有数据,而不必指定国籍条件。我只是希望所有相同的国籍在他们自己的数据框中。此外,我想要所有与该行相关的列。
例如,函数
# Create variable with TRUE if nationality is USA
american = df['nationality'] == "USA"
将返回一个数据帧数组,每个数据帧中列的所有值都相等。
因此,如果我拥有更多数据和更多国籍,那么在不更改代码的情况下,汇总到新数据帧将会有效。
答案 0 :(得分:2)
这将为您提供数据框字典,其中键是'nationality'
列的唯一值,值是您要查找的数据框。
{name: group for name, group in df.groupby('nationality')}
演示
dodf = {name: group for name, group in df.groupby('nationality')}
for k in dodf:
print(k, '\n'*2, dodf[k], '\n'*2)
France
first_name nationality age
2 NaN France 36
USA
first_name nationality age
0 Jason USA 42
1 Molly USA 52
UK
first_name nationality age
3 NaN UK 24
4 NaN UK 70