非常肯定有一个简单的解决方法,但我还没有弄明白,文档迄今为止没有提供任何解决方案。
请参阅以下原始数据样本:
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。
答案 0 :(得分:0)
好的,所以我找到了一个适合我的解决方案,
我将列拆分为新的数据框,根据需要编辑每组列,然后在最后使用以下行:
finaldf = pd.concat([df, df1, df2, df3, df4, df5], axis=1)
可能有一种更为流畅的方法可以完成这项工作,而且我很可能会在几个月后对这篇文章大笑,但我想现在已经解决了这个问题。