programing

데이터 프레임을 열 값으로 분할한 판다

lastmoon 2023. 7. 16. 17:46
반응형

데이터 프레임을 열 값으로 분할한 판다

있습니다DataFrame세로줄로Sales.

어떻게 하면 다음을 기준으로 2로 기준으로 나눌 수 있습니까?Sales가치?

첫번째DataFrame의 데이터를 사용합니다.'Sales' < s두 번째로'Sales' >= s

다음을 사용할 수 있습니다.

df = pd.DataFrame({'Sales':[10,20,30,40,50], 'A':[3,4,7,6,1]})
print (df)
   A  Sales
0  3     10
1  4     20
2  7     30
3  6     40
4  1     50

s = 30

df1 = df[df['Sales'] >= s]
print (df1)
   A  Sales
2  7     30
3  6     40
4  1     50

df2 = df[df['Sales'] < s]
print (df2)
   A  Sales
0  3     10
1  4     20

또한 반전할 수 있습니다.mask타고~:

mask = df['Sales'] >= s
df1 = df[mask]
df2 = df[~mask]
print (df1)
   A  Sales
2  7     30
3  6     40
4  1     50

print (df2)
   A  Sales
0  3     10
1  4     20

print (mask)
0    False
1    False
2     True
3     True
4     True
Name: Sales, dtype: bool

print (~mask)
0     True
1     True
2    False
3    False
4    False
Name: Sales, dtype: bool

사용.groupby다음과 같이 두 개의 데이터 프레임으로 분할할 수 있습니다.

In [1047]: df1, df2 = [x for _, x in df.groupby(df['Sales'] < 30)]

In [1048]: df1
Out[1048]:
   A  Sales
2  7     30
3  6     40
4  1     50

In [1049]: df2
Out[1049]:
   A  Sales
0  3     10
1  4     20

사용 및 목록 이해:

모든 분할 데이터 프레임을 목록 변수에 저장하고 인덱스를 기준으로 각 분할 데이터 프레임에 액세스합니다.

DF = pd.DataFrame({'chr':["chr3","chr3","chr7","chr6","chr1"],'pos':[10,20,30,40,50],})
ans = [y for x, y in DF.groupby('chr')]

다음과 같이 분리된 DF에 액세스합니다.

ans[0]
ans[1]
ans[len(ans)-1] # this is the last separated DF

다음과 같이 구분된 DF의 열 값에 액세스합니다.

ansI_chr=ans[i].chr 

바다코끼리 연산자를 사용한 원라이너(Python 3.8):

df1, df2 = df[(mask:=df['Sales'] >= 30)], df[~mask]

사용을 고려합니다.copy피해서SettingWithCopyWarning:

df1, df2 = df[(mask:=df['Sales'] >= 30)].copy(), df[~mask].copy()

또는 방법을 사용할 수 있습니다.query:

df1, df2 = df.query('Sales >= 30').copy(), df.query('Sales < 30').copy()

나는 이것을 검색 속도를 높이거나 평균 finds .apply(lambdax...) 유형의 함수를 롤링하는 데 사용하기를 좋아해서 빅 파일을 데이터 프레임 사전으로 분할합니다.

df_dict = {sale_v: df[df['Sales'] == sale_v] for sale_v in df.Sales.unique()}

범주형 그룹을 기반으로 하려면 이 작업을 수행해야 합니다.

언급URL : https://stackoverflow.com/questions/33742588/pandas-split-dataframe-by-column-value

반응형