2
はここだから我々は今、6基を有していてDataFrameの各行にグループ名を割り当てる方法は?
for name, group in df.groupby(['A', 'B']):
print(name)
print(group)
('bar', 'one')
A B C D
1 bar one -0.318147 0.384239
('bar', 'three')
A B C D
3 bar three 0.331456 0.914334
('bar', 'two')
A B C D
5 bar two 0.258204 -1.476305
('foo', 'one')
A B C D
0 foo one 1.215172 -0.861875
6 foo one -0.338992 0.856365
('foo', 'three')
A B C D
7 foo three -0.311692 -0.159846
('foo', 'two')
A B C D
2 foo two 1.729844 -0.173781
4 foo two 2.038198 -0.354784
よう
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)
})
A B C D
0 foo one 1.215172 -0.861875
1 bar one -0.318147 0.384239
2 foo two 1.729844 -0.173781
3 bar three 0.331456 0.914334
4 foo two 2.038198 -0.354784
5 bar two 0.258204 -1.476305
6 foo one -0.338992 0.856365
7 foo three -0.311692. -0.159846
とAとBでグループ化され、サンプルDFです。
質問:Gという名前の新しい列を追加し、その値が行が属するグループによって決定されるグループ名(たとえばG1、G2 ... G6)であるようにする方法。ここで
はDFが最終的にどのように見えるかです:
A B C D G
0 foo one 1.215172 -0.861875 G4
1 bar one -0.318147 0.384239 G1
2 foo two 1.729844 -0.173781 G6
3 bar three 0.331456 0.914334 G2
4 foo two 2.038198 -0.354784 G6
5 bar two 0.258204 -1.476305 G3
6 foo one -0.338992 0.856365 G4
7 foo three -0.311692. -0.159846 G5
はあなたの助けに感謝します。
あなたはそのPRへのリンクを投稿できますか? ;) – MaxU
https://github.com/pandas-dev/pandas/pull/14026 – chrisb
ありがとうございました!まさに私が何をしたのか。 – Round