我正在使用pandas从csv和excel文件导入一些数据,它们现在是dataframe类型。我正在尝试使用csv更新excel文件中的数据。我已经正确读取了数据,但是当我尝试遍历数据以查找某个键是否已经存在时,我的if语句不起作用。
for ID in update['Index']:
if ID not in data['index']:
df1:数据
Index Attr-1 Attr-2 Attr-3
01234 Blue Car Water
23456 Green Truck Lemonade
34567 Red Bike Milk Tea
df2:更新
Index Attr-1 Attr-2 Attr-3
01234 Blue Car Milk Tea
34567 Yellow Truck Lemonade
56789 Red Bike Milk Tea
实际结果:
Index Attr-1 Attr-2 Attr-3
01234 Blue Car Milk Tea
01234 Blue Car Water
23456 Green Truck Lemonade
23456 Green Truck Lemonade
34567 Red Bike Milk Tea
34567 Yellow Truck Lemonade
56789 Red Bike Milk Tea
所需结果:
Index Attr-1 Attr-2 Attr-3
01234 Blue Car Milk Tea
23456 Green Truck Lemonade
34567 Yellow Truck Lemonade
56789 Red Bike Milk Tea
我的值正在重复,因为这些值没有被if语句捕获。不太确定发生了什么事?任何反馈/想法表示赞赏。谢谢。
答案 0 :(得分:2)
请查看是否可行,您需要检查索引中的ID:
>>> data = pd.DataFrame({'Attr-1':['Blue','Green','Red']},index=['01234','23456','34567'])
>>> update = pd.DataFrame({'Attr-1':['Blue','Yellow','Green']},index=['01234','34567','56789'])
>>> for ID in update.index:
... if ID not in data.index:
... data = data.append(update.loc[ID])
...
>>> data
Attr-1
01234 Blue
23456 Green
34567 Red
56789 Green
答案 1 :(得分:0)
我不允许在dataframe中使用“ in”,这就是为什么我的for循环没有通过的原因,所以我创建了一个数组来保存键data ['index']。
`s = data['index'].tolist()
for ID in update['index']:
if ID not in s:`