반응형
데이터 프레임을 열 값으로 분할한 판다
있습니다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
반응형
'programing' 카테고리의 다른 글
목표 C에서 변수 위치의 선언/정의? (0) | 2023.07.16 |
---|---|
대문자 단어가 시작되는 모든 위치에서 문자열 분할 (0) | 2023.07.16 |
LINQ를 사용하여 Excel 읽기 (0) | 2023.07.16 |
기존 데이터 테이블에 값이 있는 새 열을 추가하는 방법은 무엇입니까? (0) | 2023.07.16 |
TypeScript는 생성된 객체를 반환하여 생성자에 대해 "초기화자가 없으며 생성자에 확실히 할당되지 않았습니다"라고 불평합니다. (0) | 2023.07.16 |