给出以下数据:data = pd.DataFrame( dict( source=["file1", "file1", "file2", "file2"], variable=["shipp", "carrr", "shipp", "bikee"], ))vals = pd.Series(["ship", "bike"])看起来像: source variable0 file1 shipp1 file1 carrr2 file2 shipp3 file2 bikee我想创建以下内容: ship bikefile1 True Falsefile2 True True不过,我不确定该怎么做,我尝试了以下方法:data.groupby("source").apply( lambda grp: pd.Series([any(grp["variable"].str.contains(v)) for v in vals]))这花了我几次,我现在想知道是否有更好的方法。(欢迎任何帮助编写更好的标题)
1 回答
森林海
TA贡献2011条经验 获得超2个赞
我们这样extract做pd.crosstab
data['new']=data.variable.str.extract('('+'|'.join(vals)+')')[0]
s=pd.crosstab(data.source,data.new).astype(bool)
new bike ship
source
file1 False True
file2 True True
添加回答
举报
0/150
提交
取消