DataFrame의 문자열이지만 dtype은 객체입니다.
왜 Pandas는 내가 객체를 가지고 있다고 말하는데, 선택된 열의 모든 항목은 명시 적 변환 후에도 문자열입니다.
이것은 내 DataFrame입니다.
<class 'pandas.core.frame.DataFrame'>
Int64Index: 56992 entries, 0 to 56991
Data columns (total 7 columns):
id 56992 non-null values
attr1 56992 non-null values
attr2 56992 non-null values
attr3 56992 non-null values
attr4 56992 non-null values
attr5 56992 non-null values
attr6 56992 non-null values
dtypes: int64(2), object(5)
그중 5 개는 dtype object
. 이러한 객체를 문자열로 명시 적으로 변환합니다.
for c in df.columns:
if df[c].dtype == object:
print "convert ", df[c].name, " to string"
df[c] = df[c].astype(str)
그런 다음, df["attr2"]
여전히 가지고 dtype object
있지만, type(df["attr2"].ix[0]
계시 str
올바른이다.
사이 팬더 구별하는 int64
과 float64
와 object
. 그것이 없을 때 그 뒤에있는 논리는 무엇입니까 dtype str
? 에 str
적용되는 이유는 무엇 object
입니까?
dtype 객체는 NumPy에서 제공되며 ndarray의 요소 유형을 설명합니다. ndarray의 모든 요소는 바이트 크기가 같아야합니다. int64 및 float64의 경우 8 바이트입니다. 그러나 문자열의 경우 문자열의 길이가 고정되지 않습니다. 따라서 ndarray에서 문자열의 바이트를 직접 저장하는 대신 Pandas는 객체에 대한 포인터를 저장하는 객체 ndarray를 사용합니다.이 때문에 이런 종류의 ndarray는 객체입니다.
다음은 예입니다.
- int64 배열에는 4 개의 int64 값이 있습니다.
- 객체 배열은 3 개의 문자열 객체에 대한 4 개의 포인터를 포함합니다.
받아 들여지는 대답은 좋습니다. 문서 를 참조한 답변을 제공하고 싶었습니다 . 문서는 다음과 같이 말합니다.
Pandas는 문자열을 저장하기 위해 객체 dtype을 사용합니다.
주요 코멘트에서 "걱정하지 마세요. 이렇게해야합니다." (수용된 답변이 "이유"를 설명하는 데 큰 도움이되었지만 문자열은 가변 길이 임)
그러나 문자열의 경우 문자열의 길이가 고정되지 않습니다.
참고 URL : https://stackoverflow.com/questions/21018654/strings-in-a-dataframe-but-dtype-is-object
'developer tip' 카테고리의 다른 글
ThreadLocal 변수의 성능 (0) | 2020.09.25 |
---|---|
write.table은 행 이름이있을 때 원하지 않는 선행 빈 열을 헤더에 씁니다. (0) | 2020.09.25 |
R에서 %> % 함수는 무엇을 의미합니까? (0) | 2020.09.25 |
MySQL 사용자 이름과 암호를 디 컴파일로부터 보호하려면 어떻게해야합니까? (0) | 2020.09.25 |
모듈러스 연산자 대신 비트 단위 (0) | 2020.09.25 |