我经常想要通过组合分组DataFrame的多个列来创建新的DataFrame.apply()函数允许我这样做,但它需要我创建一个不需要的索引:
In [359]: df = pandas.DataFrame({'x': 3 * ['a'] + 2 * ['b'], 'y': np.random.normal(size=5), 'z': np.random.normal(size=5)})
In [360]: df
Out[360]:
x y z
0 a 0.201980 -0.470388
1 a 0.190846 -2.089032
2 a -1.131010 0.227859
3 b -0.263865 -1.906575
4 b -1.335956 -0.722087
In [361]: df.groupby('x').apply(lambda x: pandas.DataFrame({'r': (x.y + x.z).sum() / x.z.sum(), 's': (x.y + x.z ** 2).sum() / x.z.sum()}))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/emarkley/work/src/partner_analysis2/main.py in <module>()
----> 1 df.groupby('x').apply(lambda x: pandas.DataFrame({'r': (x.y + x.z).sum() …Run Code Online (Sandbox Code Playgroud) 我想使用三次样条填充我的DataFrame中的列中的空白.如果我要导出到列表,那么我可以使用numpy的interp1d函数并将其应用于缺失值.
有没有办法在熊猫里面使用这个功能?
我想查看一些实体的趋势(SysNr)
我的数据跨越3年(2014,2015,2016)
我正在查看大量变量,但会将此问题限制为一个('res_f_r')
我的DataFrame看起来像这样
d = [
{'RegnskabsAar': 2014, 'SysNr': 1, 'res_f_r': 350000},
{'RegnskabsAar': 2015, 'SysNr': 1, 'res_f_r': 400000},
{'RegnskabsAar': 2016, 'SysNr': 1, 'res_f_r': 450000},
{'RegnskabsAar': 2014, 'SysNr': 2, 'res_f_r': 350000},
{'RegnskabsAar': 2015, 'SysNr': 2, 'res_f_r': 300000},
{'RegnskabsAar': 2016, 'SysNr': 2, 'res_f_r': 250000},
]
df = pd.DataFrame(d)
RegnskabsAar SysNr res_f_r
0 2014 1 350000
1 2015 1 400000
2 2016 1 450000
3 2014 2 350000
4 2015 2 300000
5 2016 2 250000
Run Code Online (Sandbox Code Playgroud)
我的愿望是对每个实体(SysNr)进行线性回归并返回斜率和截距
我想要的输出是上面的
SysNr intercept slope
0 …Run Code Online (Sandbox Code Playgroud)