大家好,
我使用dataframe创建两个表(A和B),它们都有相同的列。(第一列为“ID”,一个表可能有多个具有相同ID的行)
我希望基于A和B中的一些行创建一个新的表( C ),如果表B中的ID也出现在A中,那么将该行添加到C中。
我的代码:
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循环的情况下,还有其他方法可以做到吗?我将处理百万的数据,因为循环浪费了大量的时间。
顺便问一下,还有比熊猫更好的工具来处理大数据吗?
谢谢你的帮助!!
发布于 2017-05-16 08:18:01
看看你正在做的事情,这样做会更有表现力:
C_table = pd.concat([C_table, B_table[B_table['ID'].isin(A_table['ID'])]])因此,首先,内部声明:
B_table[B_table['ID'].isin(A_table['ID'])]在B_table中筛选出ID不在表A_table中的行,因为您只是在附加行,而不是一次追加行的速度更慢,只需将它们添加到现有的C_table中
https://stackoverflow.com/questions/43984857
复制相似问题