質問: ### 前提・実現したいこと Pythonを使ったデータ分析を実施しています。その中で行ごとに異なる列を参照したい要件があり、良い実現方法があればご教授いただけないでしょうか。 ダミーデータのため、とても違和感のある例ですが、以下のようなイメージとなります。 ⬜︎元データ | Date | Country | 日経平均株価 | NASDAQ | | --- | --- | --- | --- | | 3/10 | 日本 | 18,950 | 22,679 | | 3/11 | 米国 | 19,162 | 23,170 | ⬜︎作りたいデータ | Date | Country | 日経平均株価 | NASDAQ | 当該国の株価指数 | | --- | --- | --- | --- | --- | | 3/10 | 日本 | **18,950** | 22,679 | 18,950 | | 3/11 | 米国 | 19,162 | **23,170** | 23,170 | 注目したいのはCountry列で、Countryが日本であれば['日経平均株価']の列を、Countryが米国であれば['NASDAQ']の列を、['当該国の株価指数']として持ってきたいです。 ### 試したこと DataFrame.applymap(lamda: )式で実現できないかと考えましたがわかりませんでした。 できるだけ簡単にできる方法があれば教えて欲しいです。
回答: 国名とその対象となる列名を dict にしておき、行毎に引き当てるだけでよいのでは無いかと思います。 ``` import pandas as pd df = pd.DataFrame({'Date': ['3/10', '3/11'], 'Country': ['日本', '米国'], '日経平均株価' : ['18,950', '19,169'], 'NASDAQ': ['22,679', '23,170']}) target = {'日本' : '日経平均株価', '米国': 'NASDAQ'} df['当該国の株価指数'] = df.apply(lambda row: row[target[row['Country']]],axis=1) # Date Country 日経平均株価 NASDAQ 当該国の株価指数 #0 3/10 日本 18,950 22,679 18,950 #1 3/11 米国 19,169 23,170 23,170 ```