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

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

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

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

pandas

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

Q&A

解決済

2回答

479閲覧

pandas.Datafreamの重複したindexを書き換えたい

i113

総合スコア74

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2022/06/01 06:36

下記のようなデータフレームがあります。

df1

col1col2
idx_A93
idx_B51
idx_C64
idx_C64
idx_D102

idx_Cの重複があると、その後の計算に都合が悪いので、次のように書き換えて便宜的に違う行としたいです。

df2

col1col2
idx_A_093
idx_B_151
idx_C_264
idx_C_364
idx_D_4102

次のようにしましたが、エラーが出てしまいました。

python

1idx_list = ["idx_A_0", "idx_B_1", "idx_C_2", "idx_C_3", "idx_D_4"] 2df2 = df1.set_axis(idx_list, axis=0) 3 4ValueError: Length mismatch: Expected axis has 4 elements, new values have 5 elements

どうすれば良いでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

python

1import pandas as pd 2import io 3 4csv_data = ''' 5,col1,col2 6idx_A,9,3 7idx_B,5,1 8idx_C,6,4 9idx_C,6,4 10idx_D,10,2 11''' 12df = pd.read_csv(io.StringIO(csv_data), index_col=0) 13 14# 15df.index += [f'_{i}' for i in range(len(df))] 16print(df)
col1col2
idx_A_093
idx_B_151
idx_C_264
idx_C_364
idx_D_4102

投稿2022/06/01 13:36

melian

総合スコア19798

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

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

0

以下のようにreset_indexした結果(連続する数値)を求めてset_indexすることでできます。

Python

1import pandas as pd 2from io import StringIO 3 4s = """,col1,col2 5idx_A,9,3 6idx_B,5,1 7idx_C,6,4 8idx_C,6,4 9idx_D,10,2""" 10df = pd.read_csv(StringIO(s), index_col=[0]) 11 12idx = df.reset_index() 13df = df.set_index( df.index + '_' + idx.index.astype(str)) 14print(df) 15""" 16 col1 col2 17idx_A_0 9 3 18idx_B_1 5 1 19idx_C_2 6 4 20idx_C_3 6 4 21idx_D_4 10 2 22"""

投稿2022/06/01 09:19

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問