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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

457閲覧

ちゃんとフラグが立っていない(\_)

Pablito

総合スコア71

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/03 01:41

編集2019/12/03 02:19

前提・実現したいこと

居住地事に
「足元」、「中距離」、「長距離」、「その他」に分類を
したいと考えています。

コードは実行できたのですが、
立ったフラグが全て「足元」になっており、
悲しいことになっています。

因みにもとのデータは以下のような感じです。
*ここで「福岡県」と「福岡」が混在しているような
状況は見られません・

  居住地
居住地
神奈川県
京都府
東京都

宮崎県
福岡県
福岡県
福岡県

東京都
大分県
福岡県
宮城県
熊本県

東京都
熊本県
島根県
福岡県
山口県
熊本県
福岡県
広島県
東京都
兵庫県
長崎県
福岡県
愛知県
熊本県
東京都
福井県
福井県
熊本県
長崎県
奈良県
山口県
香川県

福岡県

鹿児島県
長崎県
福岡県

大阪府
兵庫県
宮崎県
福岡県
山口県
熊本県
大阪府
大分県
福岡県
大分県
福岡県
高知県
京都府
鳥取県
大阪府
兵庫県
京都府

福岡県
福岡県
東京都
長崎県
北海道
福岡県

福岡県
岡山県
大阪府
宮崎県
長野県
福岡県
東京都
和歌山県
山口県
山口県
長野県
熊本県
長崎県
広島県
長野県
北海道
神奈川県
神奈川県
福岡県
福岡県
熊本県
大分県
神奈川県
熊本県
福岡県

東京都

熊本県
山口県
熊本県

宮城県
福岡県
広島県
鹿児島県
沖縄県
宮崎県

愛媛県
岡山県
神奈川県
滋賀県
大阪府
鹿児島県
埼玉県
北海道
鹿児島県
熊本県
愛知県
大分県
東京都

熊本県
大阪府
熊本県
東京都

福岡県
大分県

大分県
東京都
福岡県
大阪府
愛知県
福岡県
栃木県
熊本県
長崎県
熊本県

...
...

8534 長崎県
8535 愛知県
8547 福岡県
8548 熊本県
8555 神奈川県

該当のソースコード

Python

1def area(a): 2 if a == '福岡' or '佐賀' or '長崎' or '熊本': 3 return '足元' 4 elif a == '大分' or '宮崎' or '鹿児島' or '広島' or '山口': 5 return '中距離' 6 elif a == '東京' or '大阪' or '名古屋': 7 return '長距離' 8 else: 9 return 'その他' 10 11 12df['地域別'] = df['居住地'].apply(area)

何卒宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

python

1a == '福岡' or '佐賀' or '長崎' or '熊本'

と書いて「aが福岡か佐賀か長崎か熊本のどれかなら真」という意味の式になってくれたりはしません。orはあくまでもブール演算子です。

a == '福岡''佐賀''長崎''熊本'のいずれかが真であればこの式は真になります。結果として常に真です。なんとなくこう書けそうな気がしたのは理解できなくはありませんが、間違いです。

組み込み型 — Python 3.8.0 ドキュメント

書き換えとしては、

python

1a == '福岡' or a == '佐賀' or a == '長崎' or a == '熊本'

のようにするか、

あるいはin演算子を使うと良いでしょう。

python

1a in {'福岡', '佐賀', '長崎', '熊本'} # setにしていますが、listかtupleでも構いません。その場合は{}で囲む代わりに[]か()で囲むだけ

投稿2019/12/03 01:50

hayataka2049

総合スコア30933

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

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

Pablito

2019/12/03 02:08

回答ありがとうございます! しかし、今度は全て「その他」になってしまいます。。。。
hayataka2049

2019/12/03 02:12

データが「神奈川県」や「京都府」等なら、式の文字列も「福岡県」などとするべきでは?  それで駄目なら書いたコードと再現できるデータを質問文に追記してください。
guest

0

ベストアンサー

次のように書いて下さい。

Python

1if (a == '福岡') or (a == '佐賀') or (a == '長崎') or (a == '熊本'): 2 return '足元'

あるいはin演算子を利用します。

Python

1if a in {'福岡', '佐賀', '長崎', '熊本'}: 2 return '足元'

投稿2019/12/03 01:48

LouiS0616

総合スコア35660

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

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

Pablito

2019/12/03 02:08

回答ありがとうございます! しかし、今度は全て「その他」になってしまいます。。。。
LouiS0616

2019/12/03 02:11 編集

aにどんな値が入っているのか確認できますか?
LouiS0616

2019/12/03 02:11

単に 福岡 と 福岡県 の表記揺れがあるんじゃないかと思います。
hayataka2049

2019/12/03 02:13

データの方で統一されてればいいけど、されてないと微妙に汚いコードになりそうですね(普通は先にデータを綺麗にするべき)
Pablito

2019/12/03 02:24

コードに都道府県を入れていなかったことが 原因でした。。 皆様ありがとうございました(^人^)
LouiS0616

2019/12/03 02:28

a = a.rstrip('都府県') で良いんじゃないかと一瞬思いましたが、京都府がただの京になっちゃいますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問