🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

pandas

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

Q&A

2回答

1157閲覧

(python) indexを名前に変更したいです。

Alisax

総合スコア2

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2021/02/07 06:44

編集2021/02/07 07:28

前提・実現したいこと

イメージ説明
indexを氏名に変更するやり方です。

イメージ説明

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-79-49c0bd9a992f> in <module> ----> 1 pd.merge(df01, df02, left_index = True,right_on = '氏名', sort = True) ~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/reshape/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate) 72 validate=None, 73 ) -> "DataFrame": ---> 74 op = _MergeOperation( 75 left, 76 right, ~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/reshape/merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, validate) 654 # validate the merge keys dtypes. We may need to coerce 655 # to avoid incompatible dtypes --> 656 self._maybe_coerce_merge_keys() 657 658 # If argument passed to validate, ~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/reshape/merge.py in _maybe_coerce_merge_keys(self) 1163 inferred_right in string_types and inferred_left not in string_types 1164 ): -> 1165 raise ValueError(msg) 1166 1167 # datetimelikes must match exactly ValueError: You are trying to merge on int64 and object columns. If you wish to proceed you should use pd.concat

該当のソースコード

import pandas as pd df01 = pd.DataFrame({'氏名':['高橋', '伊藤', '鈴木', '砂糖'], 'クラス':['a001', 'a001', 'a001', 'a001'], '国語':[5,6,7,8]}) df01 df02 = pd.DataFrame({'氏名':['高橋', '伊藤', '鈴木', '砂糖'], 'クラス':['a001', 'a001', 'a001', 'a001'], '数学':[5,6,7,8]}) df02 pd.merge(df01, df02, left_index = True,right_on = '氏名', sort = True)

試したこと

スペルミスを100回は確認しました。
valueerrorは、値が違うって確認しました。
結合 index 変更 ValueError で調べてみましたが、よくわからなかったです。

補足情報(FW/ツールのバージョンなど)

df01,
df02そのまま入力しても、正常に反映されます。
ムチで申し訳ありません。

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

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

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

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

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

meg_

2021/02/07 06:53

やりたいことは何でしょうか? 欲しいDataFrameを提示いただくと分かりやすいと思います。
Alisax

2021/02/07 07:04

ご返信ありがとうございます。 このようにしたいです。ー>一番上です。
meg_

2021/02/07 07:11

> indexを名前に変更したいです。 もしかしてindexではなくmergeのkeyのことを指していますか? ”氏名”を元に国語と数学の数字をマージしたいのですか?
Alisax

2021/02/07 07:28

わかりづらくて、申し訳ありません。 上のように行いたいと考えております。 どうして、エラーが出るのか、本当にわかりかねてるところです。
guest

回答2

0

pandas.merge()のonを使いましょう。

python

1import pandas as pd 2df01 = pd.DataFrame({'氏名':['高橋', '伊藤', '鈴木', '砂糖'], 3 'クラス':['a001', 'a001', 'a001', 'a001'], 4 '国語':[5,6,7,8]}) 5 6df02 = pd.DataFrame({'氏名':['高橋', '伊藤', '鈴木', '砂糖'], 7 'クラス':['a001', 'a001', 'a001', 'a001'], 8 '数学':[5,6,7,8]}) 9 10 11df = pd.merge(df01, df02, on="氏名") 12print(df) 13# 氏名 クラス_x 国語 クラス_y 数学 14#0 高橋 a001 5 a001 5 15#1 伊藤 a001 6 a001 6 16#2 鈴木 a001 7 a001 7 17#3 砂糖 a001 8 a001 8

投稿2021/02/07 07:18

meg_

総合スコア10736

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

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

0

タイトル、質問内容が一致しておらず質問内容も意味が分かりませんがデータからすると恐らくなさりたいことは

python

1pd.merge(df01, df02, on = ['氏名', 'クラス'], sort = True)
氏名 クラス 国語 数学 0 伊藤 a001 6 6 1 砂糖 a001 8 8 2 鈴木 a001 7 7 3 高橋 a001 5 5

では? left_index, right_on でindexとonを混同なさっているのかと思います。

そうではなくてインデックスの操作ならば

https://note.nkmk.me/python-pandas-set-index/

が詳しいです。

投稿2021/02/07 07:10

aokikenichi

総合スコア2240

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問