코드 (아래)는 특정 그룹 순서 이 항상이 원본 데이터 프레임과 동일하게 유지되도록 지정하려고합니다.그룹 적용 함수 내에서의 순서
내 작은 예제를 위해 그룹 내의 순서가 유지되는 것처럼 보이지만 1 백만 개의 레코드가있는 데이터 프레임이 있다면 어떻게 될까요? 팬더가 그러한 보증을 제공 할 것인가? 나 혼자서 그것에 대해 걱정해야만 하는가?
코드 :
import numpy as np
import pandas as pd
N = 10
df = pd.DataFrame(index = xrange(N))
df['A'] = map(lambda x: int(x)/5, np.random.randn(N) * 10.0)
df['B'] = map(lambda x: int(x)/5, np.random.randn(N) * 10.0)
df['v'] = np.random.randn(N)
def show_x(x):
print x
print "----------------"
df.groupby('A').apply(show_x)
print "==============="
print df
출력 :
A B v
6 -4 -1 -2.047354
[1 rows x 3 columns]
----------------
A B v
6 -4 -1 -2.047354
[1 rows x 3 columns]
----------------
A B v
8 -3 0 -1.190831
[1 rows x 3 columns]
----------------
A B v
0 -1 -1 0.456397
9 -1 -2 -1.329169
[2 rows x 3 columns]
----------------
A B v
1 0 0 0.663928
2 0 2 0.626204
7 0 -3 -0.539166
[3 rows x 3 columns]
----------------
A B v
4 2 2 -1.115721
5 2 1 -1.905266
[2 rows x 3 columns]
----------------
A B v
3 4 -1 0.751016
[1 rows x 3 columns]
----------------
===============
A B v
0 -1 -1 0.456397
1 0 0 0.663928
2 0 2 0.626204
3 4 -1 0.751016
4 2 2 -1.115721
5 2 1 -1.905266
6 -4 -1 -2.047354
7 0 -3 -0.539166
8 -3 0 -1.190831
9 -1 -2 -1.329169
[10 rows x 3 columns]
순서는 그룹 내에서 적용되거나 감소 함수로 전달되는 서브 프레임에 유지됩니다. 당신이하고있는 일과 왜 이것이 중요한지를 보여줘야합니다. – Jeff
@Jeff x - x.shift (1)와 같은 적용 함수의 경우 중요합니다. 주문이 보존되지 않으면 잘못된 답을 얻을 수 있습니다. – lowtech
답장을 보내 주셔서 감사합니다. @Andy Hayden 대답을 참조하십시오. – Jeff