그래서 팬더를 사용하여 bool, int64 및 날짜 형식의 데이터 형식을 가진 데이터 프레임을 만들었습니다. 더 작은 데이터 세트의 경우 dtype은 유지되지만 더 큰 데이터 세트의 경우 팬더는이 모든 것을 객체로 변환합니다. 왜이 일을하는 이유와 내가 명시 적으로 유형을 설정할 수있는 방법을 아는 사람이 있습니까?팬더 열을 다른 dtype으로 변환
읽기 CSV : 나는이 정보를 인쇄 할 때
twitterDataFrame = pandas.read_csv(DataSetLocation)
twitterDataFrame['CreatedAt'] = twitterDataFrame['CreatedAt'].map(lambda x: pandas.to_datetime(x,dayfirst=True))
twitterDataFrame['CreatedAtForCalculations'] = twitterDataFrame['CreatedAt']
twitterDataFrame['InReplyToStatusID'] = twitterDataFrame['InReplyToStatusID'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['InReplyToUserID'] = twitterDataFrame['InReplyToUserID'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['RetweetCount'] = twitterDataFrame['RetweetCount'].map(lambda x: x if pandas.notnull(x) else 0)
twitterDataFrame['FavouriteCount'] = twitterDataFrame['FavouriteCount'].map(lambda x: x if pandas.notnull(x) else 0)
twitterDataFrame['Hashtags'] = twitterDataFrame['Hashtags'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['URL'] = twitterDataFrame['URL'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['MediaURL'] = twitterDataFrame['MediaURL'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['MediaType'] = twitterDataFrame['MediaType'].map(lambda x: x if pandas.notnull(x) else False)
twitterDataFrame['UserMentionID'] = twitterDataFrame['UserMentionID'].map(lambda x: True if pandas.notnull(x) else False)
twitterDataFrame['PossiblySensitive'] = twitterDataFrame['PossiblySensitive'].map(lambda x: x if pandas.notnull(x) else 'NoData')
이것은 내가 무엇을 얻을 수 있습니다. 작은 데이터 세트에 대한
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 21836 entries, 0 to 21835
Data columns (total 17 columns):
CreatedAt 21836 non-null object
ActualTweet 21836 non-null object
InReplyToStatusID 21836 non-null bool
InReplyToUserID 21836 non-null bool
UserID 21836 non-null object
RetweetCount 21836 non-null object
FavouriteCount 21836 non-null object
Hashtags 21836 non-null bool
URL 21836 non-null bool
MediaURL 21836 non-null bool
MediaType 21836 non-null object
UserMentionID 21836 non-null bool
PossiblySensitive 21836 non-null object
Language 21836 non-null object
Classifier 21836 non-null object
TweetLength 21836 non-null object
CreatedAtForCalculations 21836 non-null object
dtypes: bool(6), object(11)None
그러나이 예상대로 작동하고 우리가 얻을 :이 왜
None
<class 'pandas.core.frame.DataFrame'>
Int64Index: 8978 entries, 0 to 8977
Data columns (total 17 columns):
CreatedAt 8978 non-null datetime64[ns]
ActualTweet 8978 non-null object
InReplyToStatusID 8978 non-null bool
InReplyToUserID 8978 non-null bool
UserID 8978 non-null int64
RetweetCount 8978 non-null int64
FavouriteCount 8978 non-null int64
Hashtags 8978 non-null bool
URL 8978 non-null bool
MediaURL 8978 non-null bool
MediaType 8978 non-null object
UserMentionID 8978 non-null bool
PossiblySensitive 8978 non-null object
Language 8978 non-null object
Trustworthy 8978 non-null int64
TweetLength 8978 non-null int64
CreatedAtForCalculations 8978 non-null datetime64[ns]
dtypes: bool(6), datetime64[ns](2), int64(5), object(4)None
는 아는 사람 것이며, 내가 그것을 해결하기 위해 무엇을 할 수 있는가?
더 큰 세트에는 변환 할 수없는 값이있을 수 있습니다. – furas
물론 대다수 데이터 유형이 아닌 값을 무시하도록 만드는 방법은 무엇입니까? – user2233834
여기를 참조하십시오 : http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.convert_objects.html?highlight=convert_objects#pandas.DataFrame.convert_objects를 사용하면 datetime-like 및 numberic과 같이 non-convertibles를''nan''으로 설정하여 명시 적으로''object'' 컬럼을 강제 실행할 수 있습니다. ''df [columns_that_should_be_datetimes] .convert_objects (convert_dates = 'force')'' – Jeff