我使用数据框创建两个表(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循环,还有其他方法吗? 我将处理数百万的数据,并且浪费很多时间。
顺便问一下,还有比熊猫更好的其他工具来处理大数据吗?
谢谢你的帮助!!
答案 0 :(得分:0)
看看你正在做什么,这样做会更有效:
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
中的行,因为您只是追加,而不是在一个较慢的时间附加一行,只是concat
他们与现有C_table