Cara menggunakan objek python pandas groupby atau .DataFrameGroupBy untuk membuat daftar kombinasi unik

Apakah ada cara yang lebih efisien untuk menggunakan objek pandas groupby atau pandas.core.groupby.DataFrameGroupBy untuk membuat daftar, seri, atau kerangka data unik, di mana saya ingin kombinasi unik dari 2 kolom N. Misalnya, jika saya memiliki kolom: Tanggal, Nama, Barang Dibeli dan saya hanya ingin mengetahui kombinasi Nama dan Tanggal unik, ini berfungsi dengan baik:

y = x.groupby(['Date','Name']).count()
y = y.reset_index()[['Date', 'Name']]

tapi saya merasa harus ada cara penggunaan yang lebih bersih

y = x.groupby(['Date','Name'])

tapi y.index memberi saya kesalahan, meskipun y.keys berfungsi. Ini sebenarnya membuat saya mengajukan pertanyaan umum tentang kegunaan objek pandas.core.groupby.DataFrameGroupBy?

Terima kasih!


person arosner09    schedule 27.08.2014    source sumber
comment
Apa yang Anda butuhkan yang tidak diberikan y.keys kepada Anda?   -  person BrenBarn    schedule 27.08.2014
comment
y.index memberi saya kesalahan, bisakah Anda menunjukkan kesalahannya? idealnya dengan contoh DataFrame yang menunjukkannya.   -  person Andy Hayden    schedule 27.08.2014


Jawaban (1)


Anda tidak perlu menggunakan -- dan sebenarnya tidak boleh menggunakan -- groupby di sini. Anda dapat menggunakan drop_duplications untuk mendapatkan baris unik:

x.drop_duplicates(['Date','Name'])

Demo:

In [156]: x = pd.DataFrame({'Date':[0,1,2]*2, 'Name':list('ABC')*2})

In [158]: x
Out[158]: 
   Date Name
0     0    A
1     1    B
2     2    C
3     0    A
4     1    B
5     2    C

In [160]: x.drop_duplicates(['Date','Name'])
Out[160]: 
   Date Name
0     0    A
1     1    B
2     2    C

Anda tidak boleh menggunakan groupby karena

  1. x.groupby(['Date','Name']).count() melakukan penghitungan jumlah elemen di setiap grup, tetapi penghitungan tersebut tidak digunakan -- ini adalah penghitungan yang sia-sia.
  2. x.groupby(['Date','Name']).count() memunculkan AttributeError jika x hanya memiliki kolom Date dan Name.
  3. drop_duplicates jauh lebih cepat untuk tujuan ini.

Gunakan groupby bila Anda ingin melakukan beberapa operasi pada setiap grup, seperti menghitung jumlah elemen dalam setiap kelompok, atau menghitung beberapa statistik (misalnya jumlah atau mean, dll.) per kelompok.

person unutbu    schedule 27.08.2014