次の手順に従いました。 Pythonで、リスト内のすべての項目を浮動小数点数に変換するにはどうすればよいですか? Dataframeの各列はlist
ですが、floats
すべての値をstrings
に変更することにしました。
df = [str(i) for i in df]
しかし、これは失敗しました。
列名の最初の行を除くすべてのデータを単純に消去しました。
次に、df = [str(i) for i in df.values]
を試してみると、Dataframe全体が1つの大きなリストに変更されましたが、DataframeをOracleテーブルにエクスポートするスクリプトの目標を達成するにはデータがめちゃくちゃになりすぎます。
文字列ではないデータフレーム内のすべてのアイテムを文字列に変換する方法はありますか?
applymap
メソッドを使用できます:
df = df.applymap(str)
これを使用できます:
df = df.astype(str)
好奇心から、受け入れられたソリューションと私のソリューションの効率に違いがあるかどうかを確認することにしました。
結果は以下のとおりです。
例df:df = pd.DataFrame([list(range(1000))]、index = [0])
テストdf.astype
:
%timeit df.astype(str)
>> 100 loops, best of 3: 2.18 ms per loop
テストdf.applymap
:
%timeit df.applymap(str)
1 loops, best of 3: 245 ms per loop
そうみたいです df.astype
は非常に高速です:)
これは私のために働いた:
dt.applymap(lambda x: x[0] if type(x) is list else None)