Panda DataFrame에서 True/False를 1/0에 매핑하려면 어떻게 해야 합니까?
파이썬에 칼럼이 있어요pandas
부울이 있는 데이터 프레임True
/False
하지만 더 많은 계산을 위해1
/0
표현.퀵이 있나요?pandas
/numpy
어떻게 할 수 있을까요?
부울 값의 단일 열을 정수 1 또는 0의 열로 변환하는 간단한 방법:
df["somecolumn"] = df["somecolumn"].astype(int)
데이터 프레임에 1(int)을 곱하기만 하면 됩니다).
[1]: data = pd.DataFrame([[True, False, True], [False, False, True]])
[2]: print data
0 1 2
0 True False True
1 False False True
[3]: print data*1
0 1 2
0 1 0 1
1 0 0 1
True
이1
Python과 마찬가지로False
이0
다음과 같습니다*.
>>> True == 1
True
>>> False == 0
True
숫자인 것처럼 처리하면 원하는 작업을 수행할 수 있습니다.
>>> issubclass(bool, int)
True
>>> True * 5
5
따라서 질문에 답하기 위해 작업은 필요하지 않습니다. 원하는 것은 이미 확보되어 있습니다.
* 주의: Python 키워드가 아닌 영어 단어로 사용합니다.is
-True
임의의 개체와 동일하지 않습니다.1
.
이 질문에서는 특히 단일 열을 언급하고 있으므로 현재 허용되는 답변이 작동합니다.그러나 여러 열로 일반화되지는 않습니다.일반적인 솔루션에 관심이 있는 사용자는 다음을 사용하십시오.
df.replace({False: 0, True: 1}, inplace=True)
이것은 부울의 수에 관계없이 다양한 유형의 열을 포함하는 DataFrame에서 작동합니다.
프레임에서 직접 이 작업을 수행할 수도 있습니다.
In [104]: df = DataFrame(dict(A = True, B = False),index=range(3))
In [105]: df
Out[105]:
A B
0 True False
1 True False
2 True False
In [106]: df.dtypes
Out[106]:
A bool
B bool
dtype: object
In [107]: df.astype(int)
Out[107]:
A B
0 1 0
1 1 0
2 1 0
In [108]: df.astype(int).dtypes
Out[108]:
A int64
B int64
dtype: object
부울을 정수로 변환하는 데 사용합니다.
df["somecolumn"] = df["somecolumn"].view('i1')
데이터 프레임에 변환을 사용할 수 있습니다.
df = pd.DataFrame(my_data condition)
1/0에서의 True/False 변환
df = df*1
FAKE/REAL을 0/1로 매핑해야 하는데 답을 찾을 수 없었습니다.
FAKE/REAL 값이 있는 열 이름 'type'을 0/1에 매핑하는 방법은 아래에서 확인하십시오.
(주의: 모든 열 이름 및 값에 동일한 내용을 적용할 수 있습니다.)
df.loc[df['type'] == 'FAKE', 'type'] = 0
df.loc[df['type'] == 'REAL', 'type'] = 1
이는 기존 답변 중 일부를 바탕으로 재현 가능한 예입니다.
import pandas as pd
def bool_to_int(s: pd.Series) -> pd.Series:
"""Convert the boolean to binary representation, maintain NaN values."""
return s.replace({True: 1, False: 0})
# generate a random dataframe
df = pd.DataFrame({"a": range(10), "b": range(10, 0, -1)}).assign(
a_bool=lambda df: df["a"] > 5,
b_bool=lambda df: df["b"] % 2 == 0,
)
# select all bool columns (or specify which cols to use)
bool_cols = [c for c, d in df.dtypes.items() if d == "bool"]
# apply the new coding to a new dataframe (or can replace the existing one)
df_new = df.assign(**{c: lambda df: df[c].pipe(bool_to_int) for c in bool_cols})
언급URL : https://stackoverflow.com/questions/17383094/how-can-i-map-true-false-to-1-0-in-a-pandas-dataframe
'sourcecode' 카테고리의 다른 글
matplotlib: 이미지에 직사각형을 그리는 방법 (0) | 2022.09.13 |
---|---|
docker-entrypoint-initdb의 MySQL 스크립트가 실행되지 않음 (0) | 2022.09.13 |
scheduleAtFixedRate와 스케줄고정 지연 포함 (0) | 2022.09.13 |
Linux Mint에서 MariaDB를 시작할 때 /etc/mysql/debian-start에서 이 오류가 발생하는 이유는 무엇입니까? (0) | 2022.09.13 |
MariaDB CURRENT_TIMESTamp 기본값 (0) | 2022.09.13 |