获取所有相同的行并将其放入自己的数据框中

时间:2017-01-27 21:57:22

标签: pandas

假设我有一个数据框,其中列中有不同的值,例如

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"

将返回一个数据帧数组,每个数据帧中列的所有值都相等。

因此,如果我拥有更多数据和更多国籍,那么在不更改代码的情况下,汇总到新数据帧将会有效。

1 个答案:

答案 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