답변:
부울 값의 단일 열을 정수 1 또는 0의 열로 변환하는 간결한 방법 :
df["somecolumn"] = df["somecolumn"].astype(int)
somecolumn. astype(int)그러면 사용 이 실패합니다. NaN 값을 유지하면서 True1.0과 False0.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')