给定具有分类对象类型,测量日和测量值的数据集,我想在数据集中添加一个新列,该列在第n个测量日给出该类型的值。例如,如果键入' a'在测量的第一天测量值为8,并键入' b'在测量的第一天测量值为12,我想要测量第一天的新列"值"为所有类型的行显示8' a'对于' b'的所有行,12和12。可以用Python(版本2)中的pandas DataFrames来完成吗?数据集可能如下所示:
from pandas import DataFrame
df = DataFrame([['a',2,8],['a',5,9],['b',3,12],['b',15,21]])
df.columns = ['type','day','value']
>>> df
type day value
0 a 2 8
1 a 5 9
2 b 3 12
3 b 15 21
我希望它最终看起来像这样:
type day value value on first day measured
0 a 2 8 8
1 a 5 9 8
2 b 3 12 12
3 b 15 21 12
我可以在第一天获得测量值,如下所示:
g = df.groupby('type')
g.nth(0)['value']
输出结果为:
>>> g.nth(0)['value']
type
a 8
b 12
但是我无法弄清楚如何将这些值作为新列重新放入df。
答案 0 :(得分:0)
这是一个班轮:
sdf.write.jdbc(SQL_CONNECTION, table=bigdata.sampledata,mode='append')
答案 1 :(得分:-1)
使用groupby
后跟transform
:
>>> i = df.groupby('type')['day'].transform('idxmin')
>>> df['val@1st'] = df.loc[i, 'value'].values
>>> df
type day value val@1st
0 a 2 8 8
1 a 5 9 8
2 b 11 12 12
3 b 15 21 12