首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫(数据)选择数据

熊猫(数据)选择数据
EN

Stack Overflow用户
提问于 2017-05-15 16:47:15
回答 1查看 163关注 0票数 1

大家好,

我使用dataframe创建两个表(A和B),它们都有相同的列。(第一列为“ID”,一个表可能有多个具有相同ID的行)

我希望基于A和B中的一些行创建一个新的表( C ),如果表B中的ID也出现在A中,那么将该行添加到C中。

我的代码:

代码语言:javascript
复制
from pandas import DataFrame

A_ID = [1,2,3,1,2]
A_place = [1,2,3,2,1]

B_ID = [4,2,6]
B_place = [2,2,3]

A_data = {'ID':A_ID,'place':A_place}
A_table = DataFrame(A_data)

B_data = {'ID':B_ID,'place':B_place}
B_table = DataFrame(B_data)

C_table = A_table 

for n in range(len(B_table)): 
  if B_table['ID'][n] in list(A_table['ID']):
    C_table = C_table.append(B_table[n:n+1])

问题:

我的问题是,在不使用for循环的情况下,还有其他方法可以做到吗?我将处理百万的数据,因为循环浪费了大量的时间。

顺便问一下,还有比熊猫更好的工具来处理大数据吗?

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-16 08:18:01

看看你正在做的事情,这样做会更有表现力:

代码语言:javascript
复制
C_table = pd.concat([C_table, B_table[B_table['ID'].isin(A_table['ID'])]])

因此,首先,内部声明:

代码语言:javascript
复制
B_table[B_table['ID'].isin(A_table['ID'])]

B_table中筛选出ID不在表A_table中的行,因为您只是在附加行,而不是一次追加行的速度更慢,只需将它们添加到现有的C_table

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43984857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档