str.replace选择列

时间:2018-02-27 16:53:16

标签: python pandas

非常肯定有一个简单的解决方法,但我还没有弄明白,文档迄今为止没有提供任何解决方案。

请参阅以下原始数据样本:

Access Point : Main Site, Blog, Twitter, Facebook.
User 1:        Yes        No    Yes      no
User 2:        No         Yes   No       Yes
Did this: used search, used blog, used email service.
user 1:        Yes     Yes        No
user 2:        No      Yes        Yes

在SO社区的帮助下,我已经把一个很好的可行脚本放到了

将“是”更改为列名,同时删除无用的内容(在报告上下文中)

创建一个新列,其中存储值并用逗号分隔。

 c = df.str.replace('Access Point:', '')
 s =np.where(df == 'Yes', ['{}, '.format(x) for x in c], '')
 df['new'] = pd.Series[''.join(x).strip(', ') for x in s], index=df.index 
 df.drop[['all columns where data was pulled from']] 

output: 


       New:
   User 1: main site, twitter, blog, search
   User 2  blog, facebook, blog, email 

我需要将这两个问题分开,所以我会

输出

         New Access,                 Used This:
User 1   twitter, mainsite           blog, Search  
User 2   blog facebook               blog, email 

现在,我得到的输出很棒,但是,我的数据框有大约190列,我需要一次在一定数量的列上运行上面的代码,我无法想象出去怎么办!如果我不这样做,脚本会在整个CSV中运行,创建一列将所有"是"&#s;拉成一列。虽然这基本上是我想要做的,但它使数据无法报告,因为我需要在导入BI工具之前一次更换和删除特定列。

我试图尝试以下方法:

    c['column names'] = df.str.replace('Access Point:', '')
and c = df.['column names'].str.replace('Access Point:', '') 

但无济于事。

我希望这很清楚!

干杯, Datanovice。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了一个适合我的解决方案,

我将列拆分为新的数据框,根据需要编辑每组列,然后在最后使用以下行:

finaldf = pd.concat([df, df1, df2, df3, df4, df5], axis=1)

可能有一种更为流畅的方法可以完成这项工作,而且我很可能会在几个月后对这篇文章大笑,但我想现在已经解决了这个问题。