创建一个表格,显示列表是否包含在数据框的分组列中

给出以下数据:


data = pd.DataFrame(

    dict(

        source=["file1", "file1", "file2", "file2"],

        variable=["shipp", "carrr", "shipp", "bikee"],

    )

)

vals = pd.Series(["ship", "bike"])

看起来像:


  source variable

0  file1    shipp

1  file1    carrr

2  file2    shipp

3  file2    bikee

我想创建以下内容:


          ship     bike

file1     True     False

file2     True     True

不过,我不确定该怎么做,我尝试了以下方法:


data.groupby("source").apply(

    lambda grp: pd.Series([any(grp["variable"].str.contains(v)) for v in vals])

)

这花了我几次,我现在想知道是否有更好的方法。


(欢迎任何帮助编写更好的标题)


一只名叫tom的猫
浏览 111回答 1
1回答

森林海

我们这样extract做pd.crosstabdata['new']=data.variable.str.extract('('+'|'.join(vals)+')')[0]s=pd.crosstab(data.source,data.new).astype(bool)new      bike  shipsource             file1   False  Truefile2    True  True
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python