使用Python pandas在groupby组中从第n个值创建新列

时间:2015-06-26 01:42:07

标签: python pandas

给定具有分类对象类型,测量日和测量值的数据集,我想在数据集中添加一个新列,该列在第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。

2 个答案:

答案 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