sourcecode

Panda DataFrame에서 True/False를 1/0에 매핑하려면 어떻게 해야 합니까?

copyscript 2022. 9. 13. 22:11
반응형

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

True1Python과 마찬가지로False0다음과 같습니다*.

>>> 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

반응형