熊猫通过非数值减去两个数据帧

时间:2018-10-17 06:29:32

标签: python pandas dataframe

我有两个数据框,如:

df:

    a       b         c      d
0  12   "vik"   [9,  18]   "SS"
1  13   "Rah"   [10, 18]   "YY"

df2:

    a       b         c      d
0  12   "vik"   [9,  18]   "SS"
1  13   "Rah"   [10, 18]   "YY"
2  14   "Dil"   [11, 18]   "ZZ"

我想消除df2中df中的行。我尝试过

df2.sub(df, fill_values=0)

这给我一个错误TypeError: unsupported operand type(s) for -: 'str' and 'str'

我想要的输出是:

    a       b         c      d
0  14   "Dil"   [11, 18]   "ZZ"

任何帮助都是有意义的。

2 个答案:

答案 0 :(得分:2)

merge与左联接和参数post.isAllowed('delete');一起使用,然后按query进行过滤并删除列indicator=True

_merge

答案 1 :(得分:1)

这是使用concatdrop_duplicates的一种方法

例如:

import pandas as pd

df = pd.DataFrame({"a": [12, 13], "b":["vik", "Rah"], "c":[[9,  18], [10, 18]], "d":["SS", "YY"]})
df2 = pd.DataFrame({"a": [12, 13, 14], "b":["vik", "Rah", "Dil"], "c":[[9,  18], [10, 18], [11, 18]], "d":["SS", "YY", "ZZ"]})

df3 = pd.concat([df, df2], ignore_index=True)
df3["c"] = df3["c"].apply(tuple)
print(df3.drop_duplicates(keep=False))