我有一个数据帧,我想计算统计数据(值、计数、模式、平均值等),然后将结果放入一个新的列中。我目前的解决方案是O(n**2)左右,我确信可能有一种更快、更明显的方法我忽略了。你知道吗
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(10, size=(100, 10)),
columns = list('abcdefghij'))
df['result'] = 0
groups = df.groupby([df.i, df.j])
for g in groups:
icol_eq = df.i == g[0][0]
jcol_eq = df.j == g[0][1]
i_and_j = icol_eq & jcol_eq
df['result'][i_and_j] = len(g[1])
上述方法可以工作,但对于大型数据帧来说非常慢。你知道吗
我试过了
df['result'] = df.groupby([df.i, df.j]).apply(len)
但似乎不起作用。你知道吗
也没有
def f(g):
g['result'] = len(g)
return g
df.groupby([df.i, df.j]).apply(f)
我也不能合并一个df.groupby.apply应用(λx:len(x))
要使用^{} :
transform
返回一个索引与原始df对齐的序列,这样就可以将其作为列添加相关问题 更多 >
编程相关推荐