- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望得到一些帮助来解决困扰我一整天的问题。我有一项实验的数据,在该实验中,受试者被要求通过屏幕按下键盘上的四个按钮之一——“m”、“x”、“n”、“z”——进行 1600 次试验。在偶数试验中,按下按钮遵循随机选择的模式(例如 mnzxmnzxmnzx),但在奇数试验中,按下的按钮是随机选择的。我得到的数据集仅包含受试者在哪个试验中按下的键。我需要找出:
(1) 主题的模式是什么。 (我尝试过这个,因为模式重复)
def find_pattern(df):
'''find the pattern for this subject'''
criterion = df['trial'].isin([1, 3, 5, 7])
the_pattern = df[criterion].circle_key.tolist()
return df
df = df.groupby('sid').apply(find_pattern)
(2) 找出该主题模式的可能组合是什么(即,如果我按“m”,下一个模式元素将是“x”)
为此,我尝试了一堆不同的 itertools,但没有一个完全按照我想要的方式工作。我基本上想列出 list :
['m', 'x', 'z', 'n']
对于我在(1)中得到的每个,并按顺序执行两个的所有可能组合。所以这将是:
[('m', 'x'), ('x', 'z'), ('z', 'n'), ('n', 'm')]
并且没有其他可能性。然后,我想创建一个列,从最后三个试验(包括当前的试验)中生成一个三元组,如下面的三元组
列所示。我觉得必须有某种滚动窗口,或者选择最后三个试验的简单方法。我尝试过各种错误的方法 - 我似乎无法弄清楚如何引用数据框中的“当前”行(不使用 for
列表)...
我需要这些值,因为我需要比较三元组
的第一个和最后一个元素是否是可能的组合之一(possible_comb
)。 (因此对于试验 3,答案将为 TRUE,而试验 4 的答案将为 FALSE)。
任何帮助将不胜感激。我当前的数据如下所示:
trial sid key
1 1 'm'
2 1 'm'
3 1 'x'
4 1 'n'
5 1 'x'
6 1 'x'
7 1 'n'
1 2 'm'
2 2 'm'
... ...
我希望它看起来像这样:
trial sid key pattern possible_comb triplet
1 1 'm' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] NaN
2 1 'm' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] NaN
3 1 'x' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] ['m', 'm', 'x']
4 1 'n' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] ['m', 'x', 'n']
5 1 'x' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] ['x', 'n', 'x']
6 1 'x' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] ['n', 'x', 'x']
7 1 'n' ['m', 'x', 'x', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] ['x', 'x', 'n']
1 2 'n' ['n', 'x', 'm', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] NaN
2 2 'm' ['n', 'x', 'm', 'n'] [('m','x'), ('x','x'), ('x','n'), ('n', 'm')] NaN
... ...
最佳答案
要获得“模式”,您只需对主题 ID 进行分组并获取所有其他元素。可以这样做:
>>> d.groupby('sid')['key'].apply(lambda c: list(c[::2]))
sid
1 ['m', 'x', 'x', 'n']
(我截断了您的示例,仅包含一个主题,因为您仅包含主题 2 的部分数据,该数据太短,无法形成这样的“模式”。因此,这是主题 1 的模式。)
如果您想在相应主题的原始 DataFrame 的每一行中复制该数据,请使用 map
获取每个主题 ID 的模式:
>>> d['pattern'] = d.sid.map(d.groupby('sid')['key'].apply(lambda c: list(c[::2])))
>>> d
trial sid key pattern
0 1 1 'm' ['m', 'x', 'x', 'n']
1 2 1 'm' ['m', 'x', 'x', 'n']
2 3 1 'x' ['m', 'x', 'x', 'n']
3 4 1 'n' ['m', 'x', 'x', 'n']
4 5 1 'x' ['m', 'x', 'x', 'n']
5 6 1 'x' ['m', 'x', 'x', 'n']
6 7 1 'n' ['m', 'x', 'x', 'n']
要获得顺序组合,您只需将第一个元素添加到末尾(以便序列“循环”),然后通过抓取两个元素的子列表来提取组合,函数如下:
def getCombs(pattern):
pattern = pattern + [pattern[0]]
return [pattern[ix:ix+2] for ix in xrange(len(pattern)-1)]
然后您可以将模式放入 DataFrame 中:
>>> d['combs'] = d.pattern.map(getCombs)
>>> d.combs
0 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
1 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
2 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
3 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
4 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
5 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
6 [['m', 'x'], ['x', 'x'], ['x', 'n'], ['n', 'm']]
Name: combs, dtype: object
(我在这里只显示“梳子”列,因为包含所有列会使其太宽而无法舒适地显示。)
关于python - Itertools : selecting in pandas based on previous three rows, 或列表中的前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715627/
首先我要说的是,我主要是一名 iOS 开发人员,最近才开始探索全栈开发的惊心动魄的冒险。我是 PHP 和 MySQL 的新手。话虽如此,我有一个问题,我希望需要一个直接的解决方案。 我正在为一个拥有预
我的表单上有 GridEx 对象并且... 我想用 for...next 循环在其中添加一些项目。实际上我找不到任何方法来添加带有自定义数据的新行。 我想在那个 GridEx 对象中选择一个特定的行。
我有以下数据框 df1 = DataFrame([['OBJ1', 10, 'BX', 'pool1', 'OBJ2'],['OBJ2', 0, '', '', 'OBJ1'],['OBJ3', 1
所以我有以下成员(member)历史表 User_ID | Start date | End Date | Type(0-7) | ---------------------------
我不擅长sql。我查看了 stackoverflow,但似乎对我没有任何用处。所以,我正在寻求帮助。是否可以根据行中的第一个字段将 2 行合并为 1 行。 我在 mysql 中执行此操作。我将展示示例
我了解 flex sm、md、lg 列的概念,但不了解应用于行的概念。弹性行有什么作用? sm、md、lg 尺寸应用于弹性行时意味着什么? 最佳答案 简答 - .row只是网格的容器 col .然而,
我遇到麻烦的地方 我相信我需要使用 COUNT;但是,我不知道如何将一行与同一列中的每一行进行比较,然后计算有多少行比相应行少/便宜。提前谢谢您! 这是我试图解决的官方问题: “使用示例架构,编写一条
我有以下 3 个相关表 Schools Departments Classes --------------- ------------------ --
我有代码: g, g_err = data[:, 4:6].T 我不知道[:, 4:6]的含义 尤其是第一个: .T 表示转置吗? 最佳答案 您有一个名为 data 的二维矩阵,您的代码从第一维获取所
我在行单击上附加了一个事件,在行内的复选框更改上附加了一个事件。 如何防止首先触发行单击? $(document).on('click', 'table tr', function() { con
我有一个场景,我需要连接两个 SQL 表并且正在为如何做而苦恼。假设在表 A 中我有这个: ColA ColB ColC ColD 45 55 17 45 45
我用谷歌表格记录我们俱乐部的出席率。该表格链接到另一个谷歌表格,因此可以自动创建一个名字列表,并按字母顺序排序。在这张表格中,我还根据我们所做的活动,在人的名字旁边手动输入点数。。问题是,由于姓名列表
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个回答) 5年前关闭。 编辑:我正在使用此代码读取 Ex
我是 R 的初学者。我希望你能帮助我解决我的问题。我的数据集中的文件名包含大量信息。我必须提取这些信息来创建单独的变量。 首先我使用 splits <- t(as.data.frame(strspli
假设我有一个 CSR 格式的矩阵,将一行(或多行)设置为零的最有效方法是什么? 下面的代码运行得很慢: A = A.tolil() A[indices, :] = 0 A = A.tocsr() 我不
我遇到了一个相当复杂的问题。我有一个包含三行的数据框:id、info 和 rownum。数据如下所示: id info row 1 a 1 1 b 2
我正在阅读learnjsdata.com并遇到了这种不熟悉的 JavaScript 语法。语法如下: lookupIndex[row[lookupKey]] = row; 有人知道这里发生了什么吗?我
我有一个表格,收集每周足球比赛的结果。 根据每场比赛的结果,我根据 ID 为玩家输入 3、1 或 0 分,具体取决于他们是赢、平还是输。 id Name A1 B1 C1 A2 B2
我有一个 mysql 表: 在表1中,我有3列:Bidang、Keahlian、Nilai。在 saran 列的表结果中,我想根据 bidang 组合 keahlian,但如果 nilai > 0,则
我有一个看起来像这样的表 | ID | item1 | item 2 | | 1 | A1 | B1 | | 2 | A2 |
我是一名优秀的程序员,十分优秀!