質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1149閲覧

Excel文字列と数値の扱い

SKKKK

総合スコア1

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2021/09/14 08:16

pandasを使って、文字列を置換するコードを作成しました。置換後の数字を数値として扱いたいのですがどうすればよいでしょうか?私のコードだと文字列として扱われてます。

import pandas as pd df = pd.read_excel('~\amedas.xlsx', skiprows=2) df = df.replace('静穏','calm') df = df.replace('北北東','22.5') df = df.replace('東北東','67.5') df = df.replace('東南東','112.5') df = df.replace('南南東','157.5') df = df.replace('南南西','202.5') df = df.replace('西南西','247.5') df = df.replace('西北西','292.5') df = df.replace('北北西', '337.5') df = df.replace('北東','45') df = df.replace('南東','135') df = df.replace('南西','225') df = df.replace('北西','315') df = df.replace('東','90') df = df.replace('南','180') df = df.replace('西','270') df = df.replace('北','360') df.to_excel('~\amedastest.xlsx')

amedas.xlsxは以下のようなファイルです。上のコードで、アメダスの風向データを北を0°とした角度のデータに変換しようとしています。(下のはcsvですが、、、)

amedas.xlsx

1ダウンロードした時刻:2021/09/14 17:06:38,,,,,,,,,,,,,,,,,,,,,,,,,,, 2,,,,,,,,,,,,,,,,,,,,,,,,,,, 3,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京,東京 4年月日時,気温(℃),気温(℃),気温(℃),風速(m/s),風速(m/s),風速(m/s),風速(m/s),風速(m/s),現地気圧(hPa),現地気圧(hPa),現地気圧(hPa),相対湿度(%),相対湿度(%),相対湿度(%),蒸気圧(hPa),蒸気圧(hPa),蒸気圧(hPa),露点温度(℃),露点温度(℃),露点温度(℃),海面気圧(hPa),海面気圧(hPa),海面気圧(hPa),降水量(mm),降水量(mm),降水量(mm),降水量(mm) 5,,,,,,風向,風向,,,,,,,,,,,,,,,,,,,, 6,,品質情報,均質番号,,品質情報,,品質情報,均質番号,,品質情報,均質番号,,品質情報,均質番号,,品質情報,均質番号,,品質情報,均質番号,,品質情報,均質番号,,現象なし情報,品質情報,均質番号 72021/8/13 1:00,23.9,8,1,2.4,8,東北東,8,1,1007.8,8,1,91,8,1,27,8,1,22.3,8,1,1010.6,8,1,0,0,8,1 82021/8/13 2:00,23.7,8,1,3,8,北東,8,1,1007.6,8,1,92,8,1,27,8,1,22.3,8,1,1010.4,8,1,0,0,8,1 92021/8/13 3:00,23,8,1,2.8,8,北東,8,1,1007.7,8,1,97,8,1,27.3,8,1,22.5,8,1,1010.5,8,1,0.5,0,8,1 102021/8/13 4:00,22.4,8,1,4,8,東北東,8,1,1008,8,1,94,8,1,25.5,8,1,21.4,8,1,1010.8,8,1,0.5,0,8,1 112021/8/13 5:00,21.8,8,1,3.6,8,北,8,1,1009.2,8,1,97,8,1,25.3,8,1,21.3,8,1,1012,8,1,0,0,8,1 122021/8/13 6:00,20.9,8,1,2.1,8,東南東,8,1,1009.2,8,1,97,8,1,24,8,1,20.4,8,1,1012,8,1,1.5,0,8,1 132021/8/13 7:00,20.9,8,1,1.8,8,東南東,8,1,1009.8,8,1,98,8,1,24.2,8,1,20.6,8,1,1012.6,8,1,1.5,0,8,1 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

数字に置換せず直接数値に置換してはいかがでしょうか。

python

1df = df.replace('北北東', 22.5)

投稿2021/09/14 14:49

etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SKKKK

2021/09/21 09:37

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問