在Pandas中选择两个数据框之间的唯一行

9
我可以翻译这段内容。这是一个关于编程的问题,作者有两个数据帧A和B,它们的维度不同。作者想要创建一个新的数据帧C,只包含在A和B之间唯一的行。作者尝试了一个解决方案(excluding rows from a pandas dataframe based on column value and not index value),但无法使其正常工作。
下面是示例:
假设DF_A如下:
    Star_ID         Loc_ID      pmRA        pmDE    Field     Jmag    Hmag  
 2M00000032+5737103  4264    0.000000    0.000000    N7789   10.905  10.635
 2M00000068+5710233  4264    8.000000    -18.000000  N7789   10.664  10.132
 2M00000222+5625359  4264    0.000000    0.000000    N7789   11.982  11.433
 2M00000818+5634264  4264    0.000000    0.000000    N7789   12.501  11.892
 2M00001242+5524391  4264    0.000000    -4.000000   N7789   12.091  11.482

这是关于 DF_B 的内容:
2M00000032+5737103  
2M00000068+5710233
2M00001242+5524391

所以,DF_A和DF_B之间的前两个和最后一个Star_ID是相同的。我想创建DF_C,使得:
DF_C:
        Star_ID         Loc_ID      pmRA        pmDE    Field     Jmag    Hmag
     2M00000222+5625359  4264    0.000000    0.000000    N7789   11.982  11.433
     2M00000818+5634264  4264    0.000000    0.000000    N7789   12.501  11.892
1个回答

15

这对我起作用:

In [7]:

df1[~df1.Star_ID.isin(df2.Star_ID)]

Out[7]:

              Star_ID  Loc_ID  pmRA  pmDE  Field    Jmag    Hmag
2  2M00000222+5625359    4264     0     0  N7789  11.982  11.433
3  2M00000818+5634264    4264     0     0  N7789  12.501  11.892

[2 rows x 7 columns]

所以我们在这里创建一个布尔蒙版,查询 Star_ID 值在两个数据框中的位置,但是通过使用 ~,我们否定了条件,从而使其失效。你连接的那个基本上是一样的东西,但我认为你可能没有理解语法?

编辑

为了获取仅位于 df1 和仅位于 df2 中的值,您可以执行此操作

unique_vals = df1[~df1.Star_ID.isin(df2.Star_ID)].append(df2[~df2.Star_ID.isin(df1.Star_ID)], ignore_index=True)

进一步编辑

问题在于CSV文件开头有空格,这导致两个数据集的所有值都是唯一的。要纠正这个问题,需要执行以下操作:

df1.Apogee_ID = df1.Apogee_ID.str.lstrip()

好的,我尝试按照链接示例这样做: idx = df_mds['2MASS_ID'].isin(df_survey['Apogee_ID']) df_new = df_survey[~idx]。这给了我以下错误:“提供了不可对齐的布尔系列键”。也许两个数据框中的名称必须相同? - Rohit
你实际上如何格式化注释?我上面的评论不是我喜欢的格式。 - Rohit
哪个评论?你是指像 这样 的吗?你只需要在文本周围放置 重音符号(我想它们被称为重音符号) - EdChum
1
我认为这不太对,它没有捕捉到df2中不在df1中的id? - exp1orer
很棒的答案...正是我所寻找的。 - chainstair
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接