我有一个数据帧,我从中选择两个子集dfs,df_a和df_b.例如在iris数据集中:
df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]
Run Code Online (Sandbox Code Playgroud)
获得所有元素的最佳方法iris是既不在df_a也不在df_b?我不想参考定义的原始条件df_a和df_b.我只是假设df_a和df_b是的子集iris,所以我想拔出从要素iris基础上的指数df_a和df_b.基本上,假设:
df_a = get_a_subset(iris)
df_b = get_b_subset(iris)
# retrieve the subset of iris that
# has all elements not in df_a or in df_b
# ...
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个看似低效和不优雅的解决方案,我敢肯定大熊猫有更好的方法:
# get subset of iris that is not in a nor in b
df_rest = iris[map(lambda x: (x not in df_a.index) & (x not in df_b.index), iris.index)]
Run Code Online (Sandbox Code Playgroud)
第二个:
df_rest = iris.ix[iris.index - df_a.index - df_b.index]
Run Code Online (Sandbox Code Playgroud)
如何在熊猫中最有效/优雅地完成这项工作?谢谢.
Zel*_*ny7 13
这似乎比你的第二个解决方案快一点.使用以下索引进行索引时会产生更多开销.ix:
df[~df.index.isin(df_a.index+df_b.index)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7232 次 |
| 最近记录: |