我有一个包含bus_types的列,例如:“高科技非空调”,“沃尔沃-B9R(多轴-半轴)空调”等。我必须创建另一个列来说明它是"a/c“还是"non a/c”。我尝试了以下在列上使用apply函数的直接方法
df['ac'] = df['busType'].apply(lambda x: "non a/c" if "non a/c" in x.lower() else "a/c")问题是,由于数据集有超过1000000+行的数据,apply函数的执行将永远耗费时间。有解决这个问题的办法吗?
发布于 2020-12-22 18:00:03
这是一个应该更快的解决方案,因为不使用apply:
import pandas as pd
df = pd.DataFrame({'busType':["non A/c zzzz", "non a/C zzzz", "a/c zz", "A/c zz"]})
df["is_non_ac"] = df["busType"].str.lower().str.contains("non a/c")
df["ac"] = "a/c"
df.loc[df["is_non_ac"], "ac"] = "non a/c"
df.pop("is_non_ac")
df

https://stackoverflow.com/questions/65406039
复制相似问题