[解決済み] PandasのDataFrameはリストを文字列として格納しています。リストへの変換方法
2022-10-20 21:24:18
質問
私は
n
-によって
m
Pandasデータフレーム
df
は以下のように定義されています。(これが最善の方法でないことは分かっています。しかし、それはこの記事のTMIになるので、このアプローチが私の特定のシナリオで動作するという私の言葉を受け止めてください)。
>>> df = DataFrame(columns=['col1'])
>>> df.append(Series([None]), ignore_index=True)
>>> df
Empty DataFrame
Columns: [col1]
Index: []
このDataFrameのセルに、以下のようにリストを格納しています。
>>> df['column1'][0] = [1.23, 2.34]
>>> df
col1
0 [1, 2]
何らかの理由で、DataFrameはこのリストをリストではなく文字列として保存しました。
>>> df['column1'][0]
'[1.23, 2.34]'
2点ほど質問させてください。
- なぜDataFrameはリストを文字列として保存するのですか?また、この動作を回避する方法はありますか?
- もしそうでないなら、この文字列をリストに変換するPythonicな方法はありますか?
更新
使用していたDataFrameは、CSV形式で保存・読み込みを行っていました。 この形式は、DataFrame 自体ではなく、リストを文字列からリテラルに変換していました。
どのように解決するのですか?
ご指摘の通り、この現象はpandasのDataFrameの保存と読み込みを
.csv
ファイルとして保存し、読み込むときによく起こります。
この場合、リストオブジェクトが文字列表現を持っているため、リストオブジェクトを
.csv
ファイルとして保存できるためです。を読み込むと
.csv
を読み込むと、その文字列表現が得られます。
実際のオブジェクトを保存したい場合は
DataFrame.to_pickle()
(を使います(注意:オブジェクトはpicklableでなければなりません!)。
2番目の質問に対する答えですが、これを変換して戻すには
ast.literal_eval
:
>>> from ast import literal_eval
>>> literal_eval('[1.23, 2.34]')
[1.23, 2.34]
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasが認識するすべてのdtypesは何ですか?
-
[解決済み】pythonのeval()とast.literal_eval()の使い分けについて)
-
[解決済み】リストの文字列表現をリストに変換する方法は?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法