次のようなJSON出力からデータフレームを作成しました。
Total Revenue Average Revenue Purchase count Rate
Date
Monday 1,304.40 CA$ 20.07 CA$ 2,345 1.54 %
保存された値は、JSONから文字列として受信されます。私は。。をしようとしています:
1)エントリ内のすべての文字を削除します(例:CA $または%)2)レートと収益の列をフロートに変換します3)カウント列をintに変換します
私は次のことを試みました:
df[column] = (df[column].str.split()).apply(lambda x: float(x[0]))
コマの値がある場合を除いて、正常に機能します(例:143は機能しますが、1,465は機能しません)。
「、」を「」などに置き換えるためにいくつかの関数を使用してみました。これまでのところ、何も機能しません。常に次のエラーが表示されます。
ValueError:文字列を浮動小数点に変換できませんでした: '1,304.40'
これらの文字列には、3桁ごとの区切り文字としてコンマが含まれているため、float
を呼び出す前にそれらを削除する必要があります。
df[column] = (df[column].str.split()).apply(lambda x: float(x[0].replace(',', '')))
これは、split
をlambda
内に移動することにより、少し簡略化できます。
df[column] = df[column].apply(lambda x: float(x.split()[0].replace(',', '')))
list
内包表記を使用した別のソリューション、必要に応じてstring
functionsSeries
(DataFrame
の列)でのみ機能- str.split
および str.replace
:
df = pd.concat([df[col].str.split()
.str[0]
.str.replace(',','').astype(float) for col in df], axis=1)
#if need convert column Purchase count to int
df['Purchase count'] = df['Purchase count'].astype(int)
print (df)
Total Revenue Average Revenue Purchase count Rate
Date
Monday 1304.4 20.07 2345 1.54