2016-10-26 6 views
8

저는 DataFrame입니다. 두 개의 관련 열은 다음과 같습니다. 하나는 int의 열이고 다른 하나는 str의 열입니다.팬더가 부동 소수점으로 변환하는 것을 중지하십시오.

나는 내가 int 열에 NaN를 삽입 할 경우 int에 대한 NaN 값이 없기 때문에, 팬더가 float에 모든 int 변환됩니다 것을 이해합니다.

그러나 str 열에 None을 삽입하면 팬더는 내 int을 모두 float으로 변환합니다. 이것은 제 말에 이해가되지 않습니다 - 제 2 열에 넣은 값이 왜 제 1 열에 영향을 줍니까?

int str 
0 0 zero 

    int str 
0 0 zero 
1 1 NaN 

없이 다음 출력을 어떤 방법이 있나요

import pandas as pd 
df = pd.DataFrame() 
df["int"] = pd.Series([], dtype=int) 
df["str"] = pd.Series([], dtype=str) 
df.loc[0] = [0, "zero"] 
print df 
print 
df.loc[1] = [1, None] 
print df 

출력은

int str 
0 0 zero 

    int str 
0 0.0 zero 
1 1.0 NaN 

입니다 :

여기에 간단한 작업 예 (파이썬 2)의 첫 번째 열을 int으로 다시 작성합니다.

  • 나는 의 실제 데이터를 해당 열이 정수이기 때문에 int 대신 float의 사용 선호합니다. 해결 방법이 없다면 float을 사용하겠습니다.

  • 실제 코드에서 실제 코드가 아니기 때문에 다시 작성하지 않아도됩니다.
    실제 dtype을 저장합니다.

  • 또한 행별로 삽입 된 데이터가 필요합니다.

답변

11

당신이 dtype=object을 설정하면, 당신의 시리즈는 임의의 데이터 유형을 포함 할 수있을 것입니다 :

df["int"] = pd.Series([], dtype=object) 
df["str"] = pd.Series([], dtype=str) 
df.loc[0] = [0, "zero"] 
print(df) 
print() 
df.loc[1] = [1, None] 
print(df) 

    int str 
0 0 zero 
1 NaN NaN 

    int str 
0 0 zero 
1 1 None 
이 하나 (200) 열이있는 CSV 읽기, 나에게 도움이 어떻게 당신은 내가 실제로 ... 상상할 수없는
+1

dtypes에 대한 정교한 dict으로 실험 해 왔으며, 단지 반복해서 시작해야했습니다. 고맙습니다. –

관련 문제