私はそれぞれのシミュレーションを行っています。さまざまなパラメーター(この場合はrpm
のみ)によるシステム分析と、結果データフレームresults_df
のすべての最終行を、システムの動作を提供する要約データフレームdf
に追加します。さまざまなrpm
の依存度。
プロットとデータ分析に適切なインデックスを取得するために、リストのさまざまな値(ここではrpm
)をpandas series ser
and concatに変換しました関心のある結果を含む要約データフレームdf
を含むこのシリーズ。
関心のある各計算の結果は各計算の最後の行のみであるため、.tail(1)
を使用して結果データフレームresults_df
からこのデータを抽出しています。
これまでに行ったことは、次のスニペットに示されています。
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()
for i, val in enumerate(rpm):
results_df = get_some_data_from_somwhere()
df_list.append(results_df.tail(1))
df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
私が得るこのcsvファイルは次の形式を持っています:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0.25 303,317 323,372 302,384 324,332
ただし、次のように、インデックス列に3桁の10進数と小数点記号としてコンマがあると予想しました。
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0,250 303,317 323,372 302,384 324,332
したがって、.to_csv
コマンドを使用してデータフレームをcsvファイルにエクスポートする場合、index
およびdecimal
符号オプションはインデックス列に適用されないようです。
index
オプションがTrue
に設定され、すべての値(インデックス列を除く)が正しい形式と小数点記号を持っているため、この動作をどのように実現できますか?
インデックス列を何らかの方法で処理する必要がありますか?
私はあなたの2つのボトムラインを書き直します:
_with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
_
に
_data.reset_index().to_csv('foo.csv', index=False, header=True, decimal=',', sep=' ', float_format='%.3f')
_
これは少しの回避策ですが、お気づきのとおり、キーワード引数_decimal=
_および_float_format=
_は、インデックスではなくdata列でのみ機能します。
代わりに、_reset_index
_を使用してインデックスをデータフレームに配置し、_to_csv(index=False
_に、ファイルにインデックスを保存しないように指示します(データに含まれているため)。
また、ファイルストリーム(with open('foo.csv', 'w') as f:
)を自分で開くことは、パンダに任せた方が良いです。これは、最初の引数として文字列_'foo.csv'
_を指定するだけでこれを行います。