Python Send ()가 datetime 형식을 인식하지 못합니다 (문자열로 전송 됨).데이터 테이블을 Pandas 데이터 프레임 (Python)으로 보낼 때 숫자 값 (날짜 시간)이 문자열로 전송됩니다.
이제 수동으로 처리해야하므로이 동작을 기대하지 않습니다 (Python과 JMP의 날짜 시간이 다르다는 점을 고려).
해결 방법이 있습니까? 가장 쉬운 방법은 JMP 형식을 정수로 변환하고,이 정보를 전송하고, JMP 날짜 뒤에있는 논리를 고려하여 날짜를 변환하는 것입니다 (특정 날짜 이후 초의 합계).
ClearLog();
dt = Open( "$SAMPLE_DATA/Functional Data/Weekly Weather Data.jmp");
t = dt << Subset(
Allrows,
Columns(:DATE)
);
Python Init();
Python Send( t );
Python Submit( "
import pandas as pd
print(t.dtypes)
");
Python Term();
// Output
// DATE object
// dtype: object
// Types: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dtypes.html
//float float64
//int int64
//datetime datetime64[ns] << Expected
//string object
//dtype: object
스크립팅Re : Python Send ()가 datetime 형식을 인식하지 못합니다 (문자열로 전송 됨).이 메시지 문자열은 R 용이지만 Python에도 동일한 개념을 사용할 수 있다고 생각합니다.
https://community.jmp.com/t5/Discussions/How-to-send-dates-as-characters-from-JMP-to-R/td-p/50112
Re : Python Send ()가 datetime 형식을 인식하지 못합니다 (문자열로 전송 됨).PythonSend ()는 기본 pd.read_csv ( 'myfile.csv')로 읽은 임시 csv를 저장하므로 parse_date가 없습니다.
이를 처리하기 위해 날짜 형식의 영향을받지 않는 한 가지 옵션이 있습니다.
ClearLog();
dt = Open( "$SAMPLE_DATA/Functional Data/Weekly Weather Data.jmp");
t = dt << Subset(
Allrows,
Columns(:DATE)
);
t:DATE << Format(best);
Python Init();
Python Send( t ); // send the opened data table represented by dt to Python
Python Submit( "
import pandas as pd
print(t.dtypes)
print(t.head())
t.iloc[:,0] = pd.to_datetime(t.iloc[:,0], unit='s', origin=pd.Timestamp('1904-01-01'))
print(t.dtypes)
print(t.head())
");
Python Term();
// Output
// DATE int64
// dtype: object
// DATE
// 0 3534451200
// 1 3535228800
// 2 3537648000
// 3 3538252800
// 4 3538857600
// DATE datetime64[ns]
// dtype: object
// DATE
//0 2016-01-01
//1 2016-01-10
//2 2016-02-07
//3 2016-02-14
//4 2016-02-21
더 좋은 방법이 있으면 알려주세요.