Python中文
首页
教程
问答
标签
搜索
登录
注册
Python Pandas DataFrame如果索引包含任何字符串值,则应用Label,否则应用不同的Lab
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个输出下表的数据帧。注意,“Search term”是索引。在</p> <pre><code>Search term Impressions Clicks Cost Converted clicks american brewing 286446 104862 8034.18 6831 american brewing supplies 165235 64764 3916.48 4106 brewing supplies 123598 8131 6941.87 278 wine bottles 272969 7438 4944.7 194 www americanbrewing com 2782 1163 227.17 120 home brewing 216138 3744 3468.24 110 wine making 147985 6602 5024.54 108 </code></pre> <p>如果“搜索项”(索引)包含<code>'american brewing'</code>或<code>'americanbrewing'</code>,则应用标签<code>'Brand'</code>,否则将<code>'Non-brand'</code>应用于标题为<code>Label</code>的列。在</p> ^{pr2}$ <p>我在StackOverflow上看到了很多这样的例子:</p> <pre><code>df['Label'] = df[df['SomeColumn'].str.contains('american brewing|americanbrewing')] </code></pre> <p>但这不起作用,因为我的<code>'SomeColumn'</code>是<code>df.index</code>,当我尝试类似的操作时:</p> <pre><code>df['Label'] = df[df.index.str.contains('american brewing|americanbrewing')] </code></pre> <p>我得到错误<code>AttributeError: 'Index' object has no attribute 'str'</code></p> <p>我还看到了使用<code>np.where</code>的例子,看起来很有前途,但是我仍然遇到了同样的问题,因为<code>'Search term'</code>不是一个列,而是<code>index</code>。在</p> <pre><code>df['Label'] = np.where(df['Search term'].str.contains('american brewing|americanbrewing', 'Brand', 'Non-brand') </code></pre> <p>以下是我的完整代码:</p> <pre><code>import pandas as pd import numpy as np brand_terms = ['american brewing', 'americanbrewing'] data = pd.read_csv(r'sqr.csv', encoding='cp1252') df = pd.DataFrame(data) df['Search term'] = df['Search term'].replace(r'[^\w&\' ]', '', regex=True) df['Cost'] = df['Cost'].replace(r'[^\d\.]', '', regex=True).astype('float') #print(df.dtypes) grouped = df.groupby('Search term') result = grouped[['Impressions', 'Clicks', 'Cost', 'Converted clicks']].sum() result = result.sort(['Converted clicks','Cost'], ascending=False) #This doesn't work result['Label'] = result.where(result['Search term'].str.contains('|'.join(brand_terms), 'Brand', 'Non-brand')) result.to_csv('sqr_aggregate.csv') </code></pre> <p>我如何根据<code>Search term</code>(索引)是否包含几个可能的字符串值中的任何一个,输出<code>Label</code>列?其中<code>True</code>,apply<code>Brand</code>,否则,将<code>Non-brand</code>应用到<code>Label</code>列。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>尝试更改代码以使用<code>df.groupby('Search term', as_index = False)</code>。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
7 回答
如何在乒乓球游戏中阻止球
3 回答
如何在乘法和模中不乘空间?
2 回答
如何在乘法和除以2个不同的数字之间进行交换?
3 回答
如何在也是数据一部分的单个字符上拆分大字符串
10 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
1 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
2 回答
如何在事件中心只接收最近的数据
3 回答
如何在事件发生之前保持云函数运行?
2 回答
如何在事件发生后使页面重定向到同一页面
1 回答
如何在事件回调之间保持python生成器的状态
1 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
1 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
8 回答
如何在事件处理程序中访问外部对象?
10 回答
如何在事件循环中将协程打包为正常函数?
6 回答
如何在事件循环之外运行协同程序?
5 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
6 回答
如何在事件文件中只保留一份摘要?
8 回答
如何在事件模板中添加事件
6 回答