str.replace选择列

问题描述 投票:0回答:1

我确定有一个简单的解决办法,但我无法弄清楚这一点,文档迄今为止没有提供任何解决方案。

请在下面查看我原始数据的示例:

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中运行,创建一列将所有“是”拉入一列。虽然这基本上是我想要做的,但它使数据无法报告,因为我需要在导入BI工具之前一次更换和删除特定列。

我试过尝试以下方法:

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

但无济于事。

我希望这很清楚!

干杯,Datanovice。

python pandas
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.