如何通过行索引将数据帧拆分为子数据帧

时间:2019-05-15 17:56:36

标签: python pandas dataframe split group-by

我有一个函数foo(),其输入参数数据帧将每个值都计算为大1。因此,数据帧400x5减少为1x5。

现在我有一个类似的数据框

Country    Value1    Value2
US         1         3
Uk         3         2
US         2         1
UK         5         5

结果看起来像

Country    Value1    Value2
US         1         1 
Uk         2         2

我的目标是按国家/地区划分数据集并执行我的foo()。我发现有solutiongroupby()分割数据集,但是groupby给了我tuples而不是数据帧,这是个问题,因为我的foo()只吃了数据帧。有人知道如何将数据框拆分为多个数据框并对其执行功能吗?

1 个答案:

答案 0 :(得分:1)

import pandas as pd
from pandas.compat import StringIO
print(pd.__version__)

data =  """Country    Value1    Value2
US         1         3
UK         3         2
US         2         1
UK         5         5"""

df = pd.read_csv(StringIO(data), sep='\s+')
df = df.groupby('Country').apply(lambda x: x.where(x > 1).count())
print(df)

生产

0.24.2
         Value1  Value2
Country                
UK            2       2
US            1       1

请注意,这些国家/地区以区分大小写的方式处理,Q包含大小写混合的情况,答案则不然。