Pandas의 여러 데이터 프레임 열에서 "고유 한 선택"방법은 무엇입니까?
SQL과 동등한 작업을 수행하는 방법을 찾고 있습니다.
"데이터 프레임 테이블에서 DISTINCT col1, col2 선택"
Pandas SQL 비교에는 "구별"에 대한 내용이 없습니다.
.unique ()는 단일 열에서만 작동하므로 열을 연결하거나 목록 / 튜플에 넣고 그런 방식으로 비교할 수 있다고 가정합니다. 그러나 이것은 팬더가 좀 더 네이티브 방식으로 수행해야하는 작업처럼 보입니다.
나는 명백한 것을 놓치고 있습니까, 아니면 이것을 할 방법이 없습니까?
drop_duplicates메서드를 사용하여 DataFrame에서 고유 한 행을 가져올 수 있습니다 .
In [29]: df = pd.DataFrame({'a':[1,2,1,2], 'b':[3,4,3,5]})
In [30]: df
Out[30]:
a b
0 1 3
1 2 4
2 1 3
3 2 5
In [32]: df.drop_duplicates()
Out[32]:
a b
0 1 3
1 2 4
3 2 5
subset고유성을 결정하기 위해 특정 열만 사용하려는 경우 키워드 인수를 제공 할 수도 있습니다 . 독 스트링을 참조하십시오 .
uniquedf에 대한 방법 이 없습니다. 각 열의 고유 값 수가 같으면 다음이 작동합니다. df.apply(pd.Series.unique)그렇지 않으면 오류가 발생합니다. 또 다른 접근 방식은 열 이름을 입력하는 사전에 값을 저장하는 것입니다.
In [111]:
df = pd.DataFrame({'a':[0,1,2,2,4], 'b':[1,1,1,2,2]})
d={}
for col in df:
d[col] = df[col].unique()
d
Out[111]:
{'a': array([0, 1, 2, 4], dtype=int64), 'b': array([1, 2], dtype=int64)}
비슷한 문제를 해결하기 위해 다음을 사용하고 있습니다 groupby.
print(f"Distinct entries: {len(df.groupby(['col1', 'col2']))}")
그것이 적절한 지 여부는 결과로 무엇을하고 싶은지에 달려 있습니다 (제 경우에는 COUNT DISTINCT표시된 것과 동등한 것을 원했습니다 ).
나는 다른 해결책을 시도했습니다. 첫 번째는 다음과 같습니다.
a_df=np.unique(df[['col1','col2']], axis=0)
객체 데이터가 아닌 경우에도 잘 작동합니다.이를 수행하고 오류를 방지하는 또 다른 방법 (객체 열 유형의 경우)은 drop_duplicates ()를 적용하는 것입니다.
a_df=df.drop_duplicates(['col1','col2'])[['col1','col2']]
SQL을 사용하여이 작업을 수행 할 수도 있지만 제 경우에는 매우 느리게 작동했습니다.
from pandasql import sqldf
q="""SELECT DISTINCT col1, col2 FROM df;"""
pysqldf = lambda q: sqldf(q, globals())
a_df = pysqldf(q)
drop duplicate때때로 데이터 프레임에 따라 사용 이 그렇게 유용하지 않을 것이라고 생각합니다 .
I found this:
[in] df['col_1'].unique()
[out] array(['A', 'B', 'C'], dtype=object)
And work for me!
https://riptutorial.com/pandas/example/26077/select-distinct-rows-across-dataframe
You can take the sets of the columns and just subtract the smaller set from the larger set:
distinct_values = set(df['a'])-set(df['b'])
'Program Club' 카테고리의 다른 글
| Rails 앱에서 httparty로 기본 인증을 사용하는 방법은 무엇입니까? (0) | 2020.11.10 |
|---|---|
| composer로 개발 종속성을 제거하는 방법이 있습니까? (0) | 2020.11.10 |
| Java 레이블 문 사용을 피해야합니까? (0) | 2020.11.10 |
| SQL Server에서 날짜 검색, CURRENT_TIMESTAMP 대 GetDate () (0) | 2020.11.10 |
| 자바에서 #define (0) | 2020.11.10 |