あなたが最初の列first
のために第二mean
ため4
とaggregate
で割っindex
階でgroupby
を使用することができます。
df = pd.DataFrame({'B': {0: 10, 1: 20, 2: 30, 3: 40, 4: 15, 5: 25, 6: 35, 7: 45}, 'A': {0: 1477892758, 1: 1477892773, 2: 1477892788, 3: 1477892803, 4: 1477892818, 5: 1477892833, 6: 1477892848, 7: 1477892863}})
print (df)
A B
0 1477892758 10
1 1477892773 20
2 1477892788 30
3 1477892803 40
4 1477892818 15
5 1477892833 25
6 1477892848 35
7 1477892863 45
print (df.index // 4)
Int64Index([0, 0, 0, 0, 1, 1, 1, 1], dtype='int64')
print (df.groupby(df.index // 4).agg({'A':'first', 'B':'mean'})[['A','B']])
A B
0 1477892758 25
1 1477892818 30
最初の列はindex
用いる場合reset_index
最初:
df = pd.DataFrame({'A': [10, 20, 30, 40, 15, 25, 35, 45]}, index=[1477892758, 1477892773, 1477892788, 1477892803, 1477892818, 1477892833, 1477892848, 1477892863])
print (df)
A
1477892758 10
1477892773 20
1477892788 30
1477892803 40
1477892818 15
1477892833 25
1477892848 35
1477892863 45
df.reset_index(inplace=True)
df.columns = list('AB')
print (df)
A B
0 1477892758 10
1 1477892773 20
2 1477892788 30
3 1477892803 40
4 1477892818 15
5 1477892833 25
6 1477892848 35
7 1477892863 45
print (df.groupby(df.index // 4).agg({'A':'first', 'B':'mean'})[['A','B']])
A B
0 1477892758 25
1 1477892818 30
ありがとう!これを任意の数の列を持つデータフレームに一般化する方法はありますか? –
私はカスタム 'dict'を作成する必要があると思う、この完璧な[回答](http://stackoverflow.com/a/40697343/2901002)を参照してください。 – jezrael