【发布时间】:2019-02-01 14:26:28
【问题描述】:
可以在 Pandas 数据帧中执行此 SQL 代码的等效操作
delete * from tableA where id in (select id from tableB)
【问题讨论】:
标签: pandas dataframe equivalent
可以在 Pandas 数据帧中执行此 SQL 代码的等效操作
delete * from tableA where id in (select id from tableB)
【问题讨论】:
标签: pandas dataframe equivalent
不知道你的 DataFrames 的确切结构,但应该这样做:
# Setup dummy data:
import pandas as pd
tableA = pd.DataFrame(data={"id":[1, 2, 3]})
tableB = pd.DataFrame(data={"id":[3, 4, 5]})
# Solution:
tableA = tableA[~tableA["id"].isin(tableB["id"])]
【讨论】:
是的,有一个等价物。你可以试试这个:
df2.drop(df2.loc[df2['id'].isin(df1['id'])].index)
例如:
df1 = pd.DataFrame({'id': [1,2,3,4], 'value': [2,3,4,5]})
df2 = pd.DataFrame({'id': [1,2,3,4, 5,6,7], 'col': [2,3,4,5,6,7,8]})
print(df2.drop(df2.loc[df2['id'].isin(df1['id'])].index))
输出:
id col
4 5 6
5 6 7
6 7 8
我只是随机选取了示例数据框。此示例使用 df1(或 TableB)从 df2(您可以说是 TableA)中删除值
【讨论】: