我有一个如下所示的dataframe,但我真正的dataframe有数百万行
te_df = pd.DataFrame({'subject_id':[1,1,1,2,2,2,3,3],
'test':['test1','test2','test3','test1','test2','test3','test1','test4'],
'0-24hrs':[1,1,1,2,1,1,np.nan,np.nan],
'24-48hrs':[np.nan,np.nan,np.nan,1,1,1,2,1],
'48-72hrs':[2,3,1,3,3,np.nan,np.nan,np.nan]
})
我想查找每24小时执行测试的中位数
次数(使用测试列标识)(使用
0-24hrs
、24-48hrs
、48-72hrs
)
我试过下面的
df_out = pd.DataFrame()
df_out['1st_24'] = te_df.groupby('test')['0-24hrs'].median()
df_out['2nd_24'] = te_df.groupby('test')['24-48hrs'].median()
df_out['3rd_24'] = te_df.groupby('test')['48-72hrs'].median()
而不是重复同一行三次,有没有其他高效优雅的方法来找到这一点?因为我真正的数据帧有几百万行
为什么不试试呢
out = df.groupby('test')[['0-24hrs', '24-48hrs', '48-72hrs']].median()
0-24hrs 24-48hrs 48-72hrs
test
test1 1.5 1.5 2.5
test2 1.0 1.0 3.0
test3 1.0 1.0 1.0
test4 NaN 1.0 NaN
您也可以通过以下方式来实现:-
df_out=te_df.groupby('test').median().drop(columns=['subject_id'])
#output
0-24hrs 24-48hrs 48-72hrs
test
test1 1.5 1.5 2.5
test2 1.0 1.0 3.0
test3 1.0 1.0 1.0
test4 NaN 1.0 NaN
注意:在@beny的方法通过传递列表访问列值中,您不会得到警告:
out = df.groupby('test')[['0-24hrs', '24-48hrs', '48-72hrs']].median()
问题内容: 例: 结果是: 如您所见,与列表相比,对数组进行屏蔽的操作更为优雅。如果您尝试使用列表中的数组屏蔽方案,则会收到错误消息: 问题是要为s找到一个优雅的蒙版。 更新: 通过引入的答案,但是提出的要点使解决方案完全符合我的兴趣。 问题答案: 你在找 文档中的示例 相当于:
我有一个非常大(约10万)的字典列表: 给定一个ID(例如),我如何以有效的方式找到相应的?我必须为每个列表多次这样做(我有几个这样的大列表,每个列表我有几个令牌ID)。 我目前正在遍历列表中的每个词典,检查是否与我的输入ID匹配,如果匹配,我将获得
我正在写一个国际象棋引擎,我需要一种有效的方法,将多个列表合并成一个按最小值排序的单数列表。 每个列表本质上是一组棋子,它们已经按照完美的攻击顺序排列。例如,我在a2上有一个白色的皇后,在b3上有一个白色的主教,在f1上有一个白色的车,在F2上有一个白色的车。现在假设我在f7上有一个黑色棋子,那么所有四个白色棋子从两个不同的离散方向汇聚在f7广场上--东北(皇后&毕晓普)和北方(鲁克斯)。 一些代
问题内容: SQL Server2005。我有一个带有ColumnA位,ColumnB int的表 我可以添加默认值,以便如果为1则为15,如果为0则为0? 我知道我可以用扳机做到这一点,但我的老板对扳机存有偏见(他需要扳机敏感性培训)。 问题答案: 如果您的ColumnB只能为15或零,则可以使其成为基于ColumnA的计算列。这是添加新的计算列的代码:
假设我们想检查一个矩阵(或数据框)中的哪些行存在于另一个矩阵中。我找到的所有解决方案,这个肯定基本的操作似乎要么需要一个库(这个{data.table} 4-线性),要么是冗长和模糊的,例如: 有人知道一种使用基函数的更优雅的方法,其效率与本例相当吗? 代码无效。
问题内容: 一个激励人的例子: 实施各种调度“策略”,对“作业”列表进行排序。 一种非常简单的策略是首先执行最短的作业(不考虑其权重/优先级)。 嗯,这种策略只不过是对job.length进行排序,因此让我们使用sort包。定义一个自定义类型,并实现sort.Interface … 好了,现在回到我们的简单策略… 嗯… 问题答案: 首先, 即使您使用like ,也看不到任何定义 。 我认为您的意思