我有pandas.DataFrame
喜欢:
A D V
0 329 0 138
1 329 42 137
2 329 72 141
3 329 106 141
4 329 135 138
5 800 0 150
6 800 30 160
......
现在我想,对于'A'
中的每个名字,我想使用相应的数字进行线性回归。
例如,对于'329'
,我想使用['0', '42', '72', '106', '135']
和['138', '137', '141', '141', '138']
进行线性回归。
我怎么能这样做?
答案 0 :(得分:2)
如果您使用pandas.DataFrame.groupby()
,则可以单独处理每个名称:
<强>代码:强>
import numpy as np
def interp(group):
return list(np.polyfit(group['D'].values, group['V'].values, 1))
# used as
df.groupby('A').apply(interp)
测试代码:
import pandas as pd
df = pd.read_fwf(StringIO(u""" A D V
329 0 138
329 42 137
329 72 141
329 106 141
329 135 138
800 0 150
800 30 160"""))
print(df.groupby('A').apply(interp))
<强>结果:强>
A
329 [0.0122277757944, 138.131827919]
800 [0.333333333333, 150.0]
dtype: object