我有一个熊猫数据框,它存储名、姓和全名。他们来自不同的数据源,我通过ID将他们连接在一起。我的任务是检查名字+姓氏和全名是否表示相同的人。桌子是这样的:
FIRST_NAME LAST_NAME FULL_NAME
0 RICHARD LEE LEE' RICHARD
1 MIKE JORDAN MICHAEL JORDAN
2 Jack Sparrow Jack Catchme Sparrow
我的第一步是检查first\u name的字符串是否在full\u name的字符串中。一开始,我想做一个循环:
series = pd.Series(index = df.index)
for row in df.iterrows():
series[row[0]] = row[1]["FIRST_NAME"] in row[1]["FULL_NAME"]
因为我有一个很长的表(数百万行),上面的代码将运行数小时。但是,当我在列中操作它们时,速度非常快:
series = df["FIRST_NAME"]+","+df["FULL_NAME"]
series = series.apply(lambda x: x.split(','))
series = series.apply(lambda x: True if x[0] in x[1] else False)
上面的两个方法都比较了两列中所有行的字符串。但是第二个节省了很多时间。是因为熊猫有广播的方法来操纵列吗?它是如何工作的?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐