pandas.DataFrameで指定の行を消したいのですが、インデックスキーが2つある場合、消せない場合があります。
下記スクリプト1のサンプルデータの場合はインデックス'b'をdropで問題なく消せます。
しかし、スクリプト2のようにインデックスa が2つあり、対応するもうひとつのインデックスがどちらも同じ値の1である場合、df2.drop('b')やdf2.drop(['b'])をしても、TypeError: Expected tuple, got str とうエラーが出てしまいます。
drop内の引数を適切な内容にすれば良いと思いますが、どのようにするべきなのかご教示いただければ幸いです。
お忙しいところ恐れ入りますがよろしくおねがいします。
【スクリプト1:】
import numpy as np
import pandas as pd
df1 = pd.DataFrame([1,2,3,4],
index=[['a','b','c','d'],
[1,1,2,3]]
,columns=['value'])
df1
"""結果
value
a 1 1
b 1 2
c 2 3
d 3 4
"""
df1.drop('b')
"""結果
value
a 1 1
c 2 3
d 3 4
"""
【スクリプト2:インデックスa が2つあり、対応するもうひとつのインデックスがどちらも同じ値の1である場合】
np.random.seed(0)
df2 = pd.DataFrame(np.random.randint(0,10,9).reshape((3,3)),
index = [
['a', 'a', 'b'],
[1, 1, 2]
],
columns =['value1','value2','value3'] )
df2.drop(['b']) # できない
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/23 02:43