如何根据分类变量划分数据框?

时间:2019-07-19 17:24:09

标签: python dataframe

我有一个数据集,某些人可以接受信用卡申请,而其他人则可以拒绝。

我想将数据集分为两个数据集;一张接受所有信用卡(card ='yes'),另一张拒绝所有信用卡(card ='no')。

数据集如下所示:

enter image description here

我该怎么做?

3 个答案:

答案 0 :(得分:1)

这应该有效...

df1=credit5[credit5['card']=='yes'] #gets the subset of the df where all 'card' entries are yes

df2=credit5[credit5['card']=='no'] #gets the subset of the df where all 'card' entries are no

答案 1 :(得分:1)

一种选择是在groupby理解内执行dict操作。这具有为任意数量的类别工作的额外好处。

dfs_by_card = {
   accepted: sub_df
   for accepted, sub_df in credit5.groupby("card")
}

答案 2 :(得分:0)

这是另一种解决方案,与@Derek Eden解决方案没什么不同。

 credit5=pd.DataFrame({'Card':['Yes','Yes','Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No'],'Age':[36, 35, 38, 38, 37, 37, 30, 30, 30, 33],'Income':[4.520, 2.420, 4.500, 2.540, 9.788, 5.268, 6.879, 7.852, 5.562, 4.789]}) #This is creating a dataframe

实际数据框:

   Card Age Income
0   Yes 36  4.520
1   Yes 35  2.420
2   Yes 38  4.500
3   No  38  2.540
4   No  37  9.788

credit_no = credit5[(credit5['Card'] == 'No')]

输出:“否”

   Card Age Income
3   No  38  2.540
4   No  37  9.788
7   No  30  7.852
8   No  30  5.562
9   No  33  4.789

credit_yes = credit5[(credit5['Card'] == 'Yes')]

输出:“是”

   Card Age Income
0   Yes 36  4.520
1   Yes 35  2.420
2   Yes 38  4.500
5   Yes 37  5.268
6   Yes 30  6.879

让我知道这是否有帮助。