판다: 시리즈의 데이터 유형을 문자열로 변경
Pandas 'ver 0.12.0'을 Python 2.7과 함께 사용하며 아래와 같은 데이터 프레임을 사용합니다.
df = pd.DataFrame({'id' : [123,512,'zhub1', 12354.3, 129, 753, 295, 610],
'colour': ['black', 'white','white','white',
'black', 'black', 'white', 'white'],
'shape': ['round', 'triangular', 'triangular','triangular','square',
'triangular','round','triangular']
}, columns= ['id','colour', 'shape'])
그id
영상 시리즈는 일부 정수와 문자열로 구성됩니다.그것의.dtype
기본값은 입니다.object
의 모든 내용을 변환합니다.id
현악기에 맞추어나는 노력했다.astype(str)
아래의 출력을 생성합니다.
df['id'].astype(str)
0 1
1 5
2 z
3 1
4 1
5 7
6 2
7 6
의 모든 요소를 변환하려면 어떻게 해야 합니까?id
스트링으로?
나중에 사용할 것입니다.id
데이터 프레임의 인덱싱에 사용됩니다.정수 인덱스와 비교하여 데이터 프레임에 문자열 인덱스가 있으면 속도가 느려집니까?
가장 최근의 관행을 반영하는 새로운 답변: 현재(v1.2.4), 어느 것도.astype('str')
도 아니다astype(str)
일하다.
설명서에 따르면 시리즈는 다음과 같은 방법으로 문자열 데이터 유형으로 변환할 수 있습니다.
df['id'] = df['id'].astype("string")
df['id'] = pandas.Series(df['id'], dtype="string")
df['id'] = pandas.Series(df['id'], dtype=pandas.StringDtype)
ID의 모든 요소를 다음으로 변환할 수 있습니다.str
사용.apply
df.id.apply(str)
0 123
1 512
2 zhub1
3 12354.3
4 129
5 753
6 295
7 610
OP로 편집:
저는 이 문제가 파이썬 버전(2.7)과 관련이 있다고 생각합니다. 이것은 효과가 있었습니다.
df['id'].astype(basestring)
0 123
1 512
2 zhub1
3 12354.3
4 129
5 753
6 295
7 610
Name: id, dtype: object
다음과 같이 할당해야 합니다.
df['id']= df['id'].astype(str)
개인적으로 위의 것들 중 어느 것도 저에게 맞지 않았습니다.수행한 작업:
new_str = [str(x) for x in old_obj][0]
사용할 수 있는 항목:
df.loc[:,'id'] = df.loc[:, 'id'].astype(str)
이것이 그들이 이 해결책을 추천하는 이유입니다: Pandas doc.
TD;LR
일부 답변 반영하기
df['id'] = df['id'].astype("string")
이는 'string'의 숫자를 처리할 수 없는 StringArray로 변환하려고 하므로 지정된 예에서 중단됩니다.
df['id']= df['id'].astype(str)
이 솔루션은 다음과 같은 경고를 제공합니다.
> SettingWithCopyWarning:
> A value is trying to be set on a copy of a
> slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
두 가지 가능성이 있습니다.
저에게는 효과가 있었습니다.
df['id'].convert_dtypes()
다음 문서를 참조하십시오.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.convert_dtypes.html
판다 끈 사용법 iedf['id'].str.cat()
동적으로 수행하려면
df_obj = df.select_dtypes(include='object')
df[df_obj.columns] = df_obj.astype(str)
먼저 객체로 변환하면 문제를 쉽게 해결할 수 있습니다.개체로 변환된 후 "유형"을 사용하여 str로 변환합니다.
obj = lambda x:x[1:]
df['id']=df['id'].apply(obj).astype('str')
나를 위해 .to_string이 일했습니다.
df['id']=df['id'].to_string()
언급URL : https://stackoverflow.com/questions/22231592/pandas-change-data-type-of-series-to-string
'source' 카테고리의 다른 글
FCM 통지에서 주제를 작성하는 방법 (0) | 2023.06.11 |
---|---|
도커 생성을 결합하여 DEV Azure 컨테이너 레지스트리에 넣는 방법은 무엇입니까? (0) | 2023.06.11 |
asp.net 웹 양식에서 Ninject 또는 DI를 구현하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
iPhone UI WebView 사용 시 As.Net 양식 (0) | 2023.06.11 |
CLion에서 단일 파일을 생성, 컴파일 및 실행하는 방법 (0) | 2023.06.11 |