- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个如下所示的 DataFrame:
df=pd.DataFrame({'name': ['john','jack','jill','al','zoe','jenn','ringo','paul','george','lisa'], 'how do you feel?': ['excited', 'not excited', 'excited and nervous', 'worried', 'really worried', 'excited', 'not that worried', 'not that excited', 'nervous', 'nervous']})
how do you feel? name
0 excited john
1 not excited jack
2 excited and nervous jill
3 worried al
4 really worried zoe
5 excited jenn
6 not that worried ringo
7 not that excited paul
8 nervous george
9 nervous lisa
我对计数感兴趣,但按三类分组:“兴奋”、“担心”和“紧张”。
要注意的是,“兴奋和紧张”应该与“兴奋”归为一类。事实上,包含“excited”的字符串应该被包含在一个组中,除了像“not that excited”和“not excited”这样的字符串。同样的逻辑适用于“担心”和“紧张”。 (请注意,“兴奋和紧张”实际上同时属于“兴奋”和“紧张”组)
您可以看到典型的 groupby 不起作用,字符串搜索必须灵活。
我有一个解决方案,但想知道你们是否都能找到更好的 Pythonic 方法,和/或使用我可能不知道的更合适的方法。
定义一个函数以返回包含所需子字符串且不包含否定情绪的子字符串的行的计数
def get_perc(df, column_label, str_include, str_exclude):
data=df[col_lab][(~df[col_lab].str.contains(str_exclude, case=False)) & \
(df[col_lab].str.contains(str_include, case=False))]
num=data.count()
return num
然后,在循环内调用此函数,传入各种“str.contains”参数,并将结果收集到另一个 DataFrame 中。
groups=['excited', 'worried', 'nervous']
column_label='How do you feel?'
data=pd.DataFrame([], columns=['group','num'])
for str_include in groups:
num=get_perc(df, column_label, str_include, 'not|neither')
tmp=pd.DataFrame([{'group': str_include,'num': num}])
data=pd.concat([data, tmp])
data
group num
0 excited 3
1 worried 2
2 nervous 3
有没有您能想到的更简洁的方法?我确实尝试在“str.contains
”中使用正则表达式来尝试避免需要两个 bool 系列和“&
”。但是,如果没有捕获组,我无法做到这一点,这意味着我必须使用“str.extract
”,这似乎不允许我以相同的方式选择数据。
非常感谢任何帮助。
最佳答案
你可以这样做:
方法一
not
行,然后组
。In [140]: col = 'how do you feel?'
In [141]: groups = ['excited', 'worried', 'nervous']
In [142]: df.loc[~df[col].str.contains('not '), col].str.get_dummies(sep=' ')[groups].sum()
Out[142]:
excited 3
worried 2
nervous 3
dtype: int64
方法二
In [162]: dfs = df['how do you feel?'].str.get_dummies(sep=' ')
In [163]: dfs.loc[~dfs['not'].astype(bool), groups].sum()
Out[163]:
excited 3
worried 2
nervous 3
dtype: int64
关于python - pandas - 基于子串出现次数的表达方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408383/
我希望 Eclipse 调试器观察某个表达式何时变为真(其值发生变化)并在发生这种情况时停止。这在我看来非常有用和基本,所以我认为必须有一种方法可以在 eclipse 中做到这一点(如在 gdb 中)
我正在使用 SPEL 表达式,当我的应用程序启动时,我收到此错误。 ftpOutboundGateway.setRenameExpressionString("'/processed/headers[
我不是 visual studio 程序员,但我需要快速创建一个应用程序来显示图像并使用 slider 操纵它的高度和宽度。我已经完成了快速谷歌和所有关于使用 picturebox(picbox) 作
我在玩弄 Boost Xpressive,但遇到了以下代码片段的问题 #include #include #include using namespace std; using namespac
今年我一直在想,2022年我想做些什么,做哪方面的改变,这周末在家终于想到了! 2021 轻描淡写 年底就一直想对2021年写一篇总结的,起码不得写个千八百字,可是思来想去不知道怎么写,直到最后都没想
这个问题在这里已经有了答案: Italic greek letters / latex-style math in plot titles (2 个回答) 8年前关闭。 我应该怎么做才能让 R 在图例
有没有办法为 jade 模板错误提供自定义异常处理程序? 例如 // server.js app = express(); app.set('view engine', jade); app.loca
我需要了解使用路由在 Express 应用程序中流程的工作原理,我有这些路线 app.use(require('./routes/reportsRouter')); app.use(require('
在一条 route 我有这个: if (elements.length <= 0) { var msg = 'no elements found
完整的代码如下 - 很简单,我想添加、删除或更新帖子 - 当我自己做其中一件事时,它可以工作,但一起它会中断 我在 NodeJS MySQL 中搜索了很多我用它来查询数据库 var mysql = r
下面的CSS选择器有没有更优雅的写法? input:not([type="image"]):not([type="submit"]) 我想匹配所有不是 image 类型或 submit 类型的 HTM
当我尝试全局安装 express-generator 时,它说它成功了。我什至可以在我的全局应用程序列表中看到它但是当我尝试运行 express我遇到标题问题:zsh: command not fou
这不是一个很好的问题,但它是这样的: 我正在结合 DataFrame 的几列进行非常简单的计算,但前提是一列具有特定值。想法是: if df.x==1: df.y = df.y - df.a/
我有一个网站 -https://example.com- 调用 API -https://api.example.com-。该 API 是用 Express 编写的,其使用 CORS package允
当我使用 Express 框架时,我将“.html”文件放入文件夹 View 中,然后将“.js”和“.css”文件放入 public 中。当我运行我的应用程序时,我可以获得 js 和 css,但我无
有一个简单的应用程序 var express = require('express'); var http = require('http'); var path=require('path'); v
我正在构建一个基于express的REST API,我想在用户的请求中使用错误的HTTP动词时发出警告。 目前,我正在添加 app.all('/', (req, res) => { answe
对于用于在 connect/express 中对 session 数据进行加密散列的 key 长度有什么建议吗?我看到了从 60 多个字符串到规范的“键盘猫”的所有内容。 对于我的直接用例,我打算对整
Redis 的HDEL 的时间复杂度是O(N)(其中N 是要移除的字段数)。我有一个用例,其中字段必须为每个操作进行类型转换。我将如何表达新的时间复杂度? O(N*2)? 最佳答案 时间复杂度将相同:
我看到我可以像这样指定 gradle 依赖项: dependencies { compile 'com.fasterxml.jackson.core:jackson-annotations:2
我是一名优秀的程序员,十分优秀!