Python 放弃复制熊猫和炼金术

Python 放弃复制熊猫和炼金术,python,pandas,sqlalchemy,Python,Pandas,Sqlalchemy,我正在尝试为一个呼叫中心制作一个脚本,该中心希望能够将数百万条记录从csv文件上传到数据库,从上传中过滤掉所有重复的电话号码。为了做到这一点,我使用了熊猫和炼金术 df = read_csv('test.csv') rd = models.session.query(Test).all() 我知道pandas中有drop_duplicates(),但只能找到从同一数据帧中删除重复项的示例。这是否适用于我的情况 更新: 这是我到目前为止所做的一切,多亏了其他人的帮助 df = read_csv

我正在尝试为一个呼叫中心制作一个脚本,该中心希望能够将数百万条记录从csv文件上传到数据库,从上传中过滤掉所有重复的电话号码。为了做到这一点,我使用了熊猫和炼金术

df = read_csv('test.csv')

rd = models.session.query(Test).all()
我知道pandas中有
drop_duplicates()
,但只能找到从同一数据帧中删除重复项的示例。这是否适用于我的情况

更新:

这是我到目前为止所做的一切,多亏了其他人的帮助

df = read_csv('phones.csv')

result_dict = [u.__dict__ for u in models.session.query(Dedupe).all()]

df['tel'] = df.index

rd = DataFrame.from_dict(result_dict)

print df[~df['tel'].isin(rd['tel'].unique())]

它仍在打印所有csv文件。即使有重复的

我认为这说明了如何对照数据库中的电话号码进行检查

In [59]:  data = pd.DataFrame(range(10), columns=['number'])

In [60]: data
Out[60]: 
   number
0       0
1       1
2       2
3       3
4       4
5       5
6       6
7       7
8       8
9       9

In [61]: check = range(5)

In [62]: check
Out[62]: [0, 1, 2, 3, 4]

In [63]: data = data[~data['number'].isin(check)]

In [64]: data
Out[64]: 
   number
5       5
6       6
7       7
8       8
9       9

用您的上传表替换数据检查将需要从数据库中查询电话号码列表。

对不起,这里有什么问题?你可以做
df=df.drop_duplicates(subset='phone_number')
这难道不管用吗?那不是只在df中寻找重复,而不是在df和rd之间寻找重复吗?是的,在这种情况下,你可以过滤你读到的df所以
df[~df['phone_number'].isin(rd['phone_number'].unique())]]
我不知道您是否需要在
df['phone\u number']
上调用
.unique
我的意思是缓存数据库中现有的电话号码。因此,请验证SQL查询的输出,以确保
rd['tel']
df['tel']
列中的数据类型相同。