답변:
부울 값의 단일 열을 정수 1 또는 0의 열로 변환하는 간결한 방법 :
df["somecolumn"] = df["somecolumn"].astype(int)
somecolumn
. astype(int)
그러면 사용 이 실패합니다. NaN 값을 유지하면서 True
1.0과 False
0.0 (부동)으로 변환 하는 또 다른 방법 은 다음과 같습니다.df.somecolumn = df.somecolumn.replace({True: 1, False: 0})
astype(float)
하고 같은 결과를 얻을 수 없었 습니까?
True
이다 1
파이썬에서, 마찬가지로 False
입니다 0
* :
>>> True == 1
True
>>> False == 0
True
당신은 그들이 그들이이 숫자 것처럼 단지 그들을 처리하여 당신이 그들에 원하는 작업을 수행 할 수있을 것 입니다 번호 :
>>> issubclass(bool, int)
True
>>> True * 5
5
따라서 귀하의 질문에 대답하기 위해 필요한 작업이 없습니다. 이미 찾고 계신 것이 있습니다.
* 참고 I의 사용 이다 영어 단어가 아닌 파이썬 키워드로 is
- True
어떤 임의 같은 대상이되지 않습니다 1
.
np.sin(True).dtype
하십시오.
df.my_column.mean()
잘 호출 할 수는 있지만 시도 할 때 : df.groupby("some_other_column").agg({"my_column":"mean"})
나는 얻습니다 DataError: No numeric types to aggregate
. 그래서 항상 같지는 않습니다 . 참고로
bool
열을 잘 집계 할 수 있습니다 .
TypeError: numpy boolean subtract, the
-` operator, deprecated, bitwise_xor, ^
operator 또는 logical_xor 함수를 대신 사용하십시오.
bool
이의 경우와 같이 열 int
열
프레임에서 직접 할 수도 있습니다.
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 = pd.DataFrame(my_data condition)
df = df*1
Series.view
부울을 정수로 변환하는 데 사용하십시오 .
df["somecolumn"] = df["somecolumn"].view('i1')