Python Send()は日時形式を認識しません(文字列として送信)データテーブルをパンダデータフレーム(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()が日時形式を認識しない(文字列として送信)このメッセージ文字列はR用でしたが、Pythonでも同じ概念を使用できると思います。
https://community.jmp.com/t5/Discussions/How-to-send-dates-as-characters-from-JMP-to-R/td-p/50112
Re:Python Send()は日時形式(文字列として送信)を認識しませんPythonSend()は、デフォルトのpd.read_csv( 'myfile.csv')で読み取られる一時的なcsvを保存するため、parse_dateは保存されません。
これに対処するために、日付形式の影響を受けない1つのオプション:
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
より良い方法があれば、私に知らせてください。