在pandas
中,可以对数据帧中的每一列应用一些groupby函数,例如:
pt=df.groupby(['Group']).sum().reset_index()
假设我想应用一个lambda函数lambda x:(0
import pandas as pd
df=pd.DataFrame({'Group':['W', 'W', 'W', 'E','E','E','N'],
'A':[0,1,5,0,1,5,7],
'B':[1,0,5,0,0,2,0],
'C':[1,1,5,0,0,5,0],
'Total':[2,2,15,0,1,12,7]
})
#Check how many items are present in Group
grp=df.groupby(['Group'])
pt1 = grp['A'].apply(lambda x: (0 < x).sum()).reset_index()
pt2 = grp['B'].apply(lambda x: (0 < x).sum()).reset_index()
pt3 = grp['C'].apply(lambda x: (0 < x).sum()).reset_index()
pct=pd.merge(pt1, pt2, on=['Group'])
pct=pd.merge(pt2, pct, on=['Group'])
#Get total items and merge with counts
pt = df.groupby(['Group'])['Total'].count().reset_index()
pct=pd.merge(pt, pct, on=['Group'])
输出:
Group Total C A B
0 E 3 1 2 1
1 N 1 0 1 0
2 W 3 3 2 2
为n列写它的有效方法是什么?
我能想到的最干净的方法是:
(df > 0).groupby(df['Group']).agg({'A': 'sum', 'B': 'sum', 'C': 'sum', 'Total': 'count'})
Out:
C Total B A
Group
E 1.0 3 1.0 2.0
N 0.0 1 0.0 1.0
W 3.0 3 2.0 2.0
如果需要,可以排序并强制转换为int:
((df > 0).groupby(df['Group']).agg({'A': 'sum', 'B': 'sum', 'C': 'sum', 'Total': 'count'})
.sort_index(axis=1).astype('int')
Out:
A B C Total
Group
E 2 1 1 3
N 1 0 0 1
W 2 2 3 3
问题内容: 在您希望POS标记存储在熊猫数据框中的一列文本(每行只有一句话)的情况下,SO上的大多数实现都使用apply方法 NLTK文档建议使用pos_tag_sents()有效标记多个句子。 这是否适用于此示例,如果是,那么代码是否像更改为那样简单,或者NLTK意味着段落的文本源 正如评论中提到的那样,目的是每次都减少感受器的负载, 但是问题是如何做到这一点,并且仍然在熊猫数据框中生成一列?
问题内容: 我有一个熊猫DataFrame,其中包含多个列: 我想基于对数据框的每一行应用一个函数为此数据框创建两个新列。我不想多次调用该函数(例如,通过执行两次单独的调用),因为它占用大量计算资源。我尝试通过两种方式来执行此操作,但它们都不起作用: 使用: 我编写了一个函数,该函数接受a并返回我想要的值的元组: 尝试将此应用于DataFrame会出现错误: 然后,我将使用此问题中显示的方法将从返
我想应用一个自定义函数并创建一个名为population2050的派生列,该列基于数据框中已经存在的两列。 当我运行上面的代码时,我得到一个错误。我是否没有正确使用“应用”功能?
我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出
有人能解释一下为什么这个代码不起作用吗? 它返回错误:TypeError:(“'NoneType'对象不可调用”,“发生在索引0上”)数据帧df在某些单元格中包含一些None值。我的意图是对所有非无值应用函数。
问题内容: 在 pandas groupby上发布了一个新的更通用的问题:每个组中的前3个值并存储在DataFrame中,并且在那里已经找到了可行的解决方案。 在此示例中,我创建了一个数据帧,其中的一些随机数据间隔为5分钟。我想创建一个数据框( df分组 ),其中列出了每小时的 3个最高值 。 即:从这一系列价值 我非常接近解决方案,但我找不到最后一步的正确语法。我到现在为止()的结果是: 我想从