[python] Pandas 데이터 프레임 내의 열을 정수에서 문자열로 변환

int 및 str 데이터 열이 혼합 된 팬더에 데이터 프레임이 있습니다. 데이터 프레임 내에서 먼저 열을 연결하고 싶습니다. 그렇게하려면 int열을 str. 다음과 같이 시도했습니다.

mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])

또는

mtrx['X.3'] = mtrx['X.3'].astype(str)

하지만 두 경우 모두 작동하지 않고 ” ‘str’및 ‘int’개체를 연결할 수 없습니다.”라는 오류가 발생합니다. 두 str열을 연결하면 완벽하게 작동합니다.



답변

In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB'))

In [17]: df
Out[17]:
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [18]: df.dtypes
Out[18]:
A    int64
B    int64
dtype: object

시리즈 변환

In [19]: df['A'].apply(str)
Out[19]:
0    0
1    2
2    4
3    6
4    8
Name: A, dtype: object

In [20]: df['A'].apply(str)[0]
Out[20]: '0'

결과를 다시 할당하는 것을 잊지 마십시오.

df['A'] = df['A'].apply(str)

전체 프레임 변환

In [21]: df.applymap(str)
Out[21]:
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [22]: df.applymap(str).iloc[0,0]
Out[22]: '0'

df = df.applymap(str)


답변

DataFrame 열의 데이터 유형 변경 :

int로 :

df.column_name = df.column_name.astype(np.int64)

str하려면 :

df.column_name = df.column_name.astype(str)


답변

경고 : 주어진 두 솔루션 ( astype () 및 apply () ) 은 nan 또는 None 형식에서 NULL 값을 유지하지 않습니다.

import pandas as pd
import numpy as np

df = pd.DataFrame([None,'string',np.nan,42], index=[0,1,2,3], columns=['A'])

df1 = df['A'].astype(str)
df2 =  df['A'].apply(str)

print df.isnull()
print df1.isnull()
print df2.isnull()

나는 이것이 to_string () 의 구현으로 고쳐 졌다고 생각합니다.


답변

다음 코드를 사용하십시오.

df.column_name = df.column_name.astype('str')


답변

추가 참조를 위해.

위의 모든 답변은 데이터 프레임의 경우 작동합니다. 그러나 열을 생성 / 수정하는 동안 람다를 사용하는 경우 pandas 시리즈 대신 int 속성으로 간주되기 때문에 작동하지 않습니다. str (target_attribute)을 사용하여 문자열로 만들어야합니다. 아래 예를 참조하십시오.

def add_zero_in_prefix(df):
    if(df['Hour']<10):
        return '0' + str(df['Hour'])

data['str_hr'] = data.apply(add_zero_in_prefix, axis=1)


답변