我有一个包含大约90k字符串的列表和一个包含多列的数据框,我有兴趣检查列表中的字符串是否在column_1中,并且它是否分配相同值为第2列。用列表理解修改数据框列
我可以这样做:
for i in range(len(my_list)):
item = list[i]
for j in range(len(df)):
if item == df['column_1'][j]:
df['column_2'][j] = item
但我宁愿避免嵌套循环
我想这
for item in my list:
if item in list(df['column _1']):
position = df[df['column_1']==item]].index.values[0]
df['column_2'][position] = item
,但我认为,这个解决方案是更慢,更难阅读,这个操作可以通过简单的列表理解来完成吗?
编辑。
第二个解决方案它速度相当快,大约一个数量级。 这是为什么?看来,在这种情况下它必须为马赫两次搜索:
这里:
if item in list(df['column _1'])
这里:
possition = df[df['column_1]=='tem]].index.values[0]
尽管如此,我宁愿一个简单的解决方案。
我觉得你并不需要第二df.loc [...],所以它会工作也很喜欢这:df.ix [(df ['column_1']。isin(my_list)),'column_2'] = df ['column_1']作为一行 – MaxU