我的 df:
dframe = pd.DataFrame({"A":list("aaaabbbbccc"), "C":range(1,12)}, index=range(1,12))
Out[9]:
A C
1 a 1
2 a 2
3 a 3
4 a 4
5 b 5
6 b 6
7 b 7
8 b 8
9 c 9
10 c 10
11 c 11
基于列值的子集:
In[11]: first = dframe.loc[dframe["A"] == 'a']
In[12]: first
Out[12]:
A C
1 a 1
2 a 2
3 a 3
4 a 4
根据列值删除:
In[16]: dframe = dframe[dframe["A"] != 'a']
In[17]: dframe
Out[16]:
A C
5 b 5
6 b 6
7 b 7
8 b 8
9 c 9
10 c 10
11 c 11
有没有什么办法可以一次做到这两点?就像根据列值对行进行子集化并删除原始 df 中的相同行。
请您参考如下方法:
这不是真正的一次拍摄,但通常这样做的方法是重复使用 bool 掩码,如下所示:
In [28]: mask = dframe['A'] == 'a'
In [29]: first, dframe = dframe[mask], dframe[~mask]
In [30]: first
Out[30]:
A C
1 a 1
2 a 2
3 a 3
4 a 4
In [31]: dframe
Out[31]:
A C
5 b 5
6 b 6
7 b 7
8 b 8
9 c 9
10 c 10
11 c 11
