Pertanyaan Menggabungkan baris di panda [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya memiliki DataFrame dengan indeks yang disebut city_id kota-kota dalam format [city],[state] (misalnya., new york,ny mengandung jumlah integer dalam kolom. Masalahnya adalah bahwa saya memiliki beberapa baris untuk kota yang sama, dan saya ingin menutup baris berbagi city_id dengan menambahkan nilai kolomnya. Aku menatap groupby() tetapi tidak langsung jelas bagaimana menerapkannya pada masalah ini.

Edit:

Contoh: Saya ingin mengubah ini:

city_id    val1 val2 val3
houston,tx    1    2    0
houston,tx    0    0    1
houston,tx    2    1    1

ke dalam ini:

city_id    val1 val2 val3
houston,tx    3    3    2

jika ada ~ 10-20k baris.


32
2017-07-03 02:51


asal


Jawaban:


Mulai dari

>>> df
              val1  val2  val3
city_id                       
houston,tx       1     2     0
houston,tx       0     0     1
houston,tx       2     1     1
somewhere,ew     4     3     7

Saya mungkin lakukan

>>> df.groupby(df.index).sum()
              val1  val2  val3
city_id                       
houston,tx       3     3     2
somewhere,ew     4     3     7

atau

>>> df.reset_index().groupby("city_id").sum()
              val1  val2  val3
city_id                       
houston,tx       3     3     2
somewhere,ew     4     3     7

Pendekatan pertama melewati nilai indeks (dalam hal ini, yang city_id nilai) ke groupby dan memberitahukannya untuk menggunakannya sebagai kunci grup, dan yang kedua mengatur ulang indeks dan kemudian memilih city_id kolom. Lihat bagian ini dari dokumen untuk lebih banyak contoh. Perhatikan bahwa ada banyak metode lain dalam DataFrameGroupBy objek juga:

>>> df.groupby(df.index)
<pandas.core.groupby.DataFrameGroupBy object at 0x1045a1790>
>>> df.groupby(df.index).max()
              val1  val2  val3
city_id                       
houston,tx       2     2     1
somewhere,ew     4     3     7
>>> df.groupby(df.index).mean()
              val1  val2      val3
city_id                           
houston,tx       1     1  0.666667
somewhere,ew     4     3  7.000000

41
2017-07-03 04:29



Sesuatu di baris yang sama. Maaf bukan replika yang tepat.

mydata = [{'subid' : 'B14-111', 'age': 75, 'fdg':1.78},
          {'subid' : 'B14-112', 'age': 22, 'fdg':1.56},{'subid' : 'B14-112', 'age': 40, 'fdg':2.00},]
df = pandas.DataFrame(mydata)

gg = df.groupby("subid",sort=True).sum()

2
2017-07-03 04:32