私の入力データはこれです-
"Name" : ["Alice", "Bob", "Jake", "Jake", "Steve" , "Bob"] ,
"City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"],
"CityID" : ["1", "1", "2", "1", "1", "2"]
} )
印刷すると次のように表示されます。
City Name CityID
0 Seattle Alice 1
1 Seattle Bob 1
2 Portland Jake 2
3 Seattle Jake 1
4 Seattle Steve 1
5 Portland Bob 2
私はこのようなものを手に入れようとしています-
City CityID Alice Bob Jake Steve
0 Seattle 1 True True True True
1 Portland 2 False True True False
ここへの行き方がわかりません。groupby関数を試しました
df.groupby(['City','CityID', 'Name']).first()
これに私を連れて行った-
City CityID Name
Seattle 1 Alice
Bob
Jake
Portland 2 Bob
Jake
Steve
この後の進め方がわかりません。ヒントがあれば大いに役立ちます。
使用get_dummies
してdtype=bool
内で一意の値を持つパラメータMultiIndex
によってmax
:
df = (pd.get_dummies(df.set_index(['City','CityID'])['Name'], dtype=bool)
.max(level=[0,1])
.reset_index())
print (df)
City CityID Alice Bob Jake Steve
0 Seattle 1 True True True True
1 Portland 2 False True True False
groupby
解決策が必要な場合True
はDataFrame.assign
、で埋められた新しい列を作成し、を使用しGroupBy.first
、形状を変更しSeries.unstack
、最後MultiIndex
に列に変換しますDataFrame.reset_index
。これDataFrame.rename_axis
は、列名を削除するためのものa
です。
df = (df.assign(a=True)
.groupby(['City','CityID', 'Name'], sort=False)['a']
.first()
.unstack(fill_value=False)
.reset_index()
.rename_axis(None, axis=1))
print (df)
City CityID Alice Bob Jake Steve
0 Seattle 1 True True True True
1 Portland 2 False True True False
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加