我确定有一个简单的解决办法,但我无法弄清楚这一点,文档迄今为止没有提供任何解决方案。
请在下面查看我原始数据的示例:
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。
好的,所以我找到了一个适合我的解决方案,
我将列拆分为新的数据框,根据需要编辑每组列,然后在最后使用以下行:
finaldf = pd.concat([df, df1, df2, df3, df4, df5], axis=1)
可能有一种更为流畅的方式来完成这项工作,而且我很可能会在几个月后嘲笑这篇文章,但我想现在已经解决了这个问题。