1

I have a large dataframe and I would like to use groupby function but I got the error:

TypeError: sequence item 0: expected str instance, list found

Data:

lokalnyid        object
powiat            int64
status_bdo       object
kategoria_       object
funkcja_og       object
funkcja_sz       object
zabytek           int64
geometry         object
liczba_kon      float64
1_5000_pi025     object
dtype: object

My code:

df2 = df.groupby(['lokalnyid', 'powiat', 'status_bdo', 'kategoria_', 'funkcja_og', 'funkcja_sz', 'zabytek', 'geometry', 'liczba_kon'])['1_5000_pi025'].apply(', '.join).reset_index()

I have read: Concatenate strings from several rows using Pandas groupby and I didn't find any solution.

Column joined_kafs_df_and_bud_layer['1_5000_pi025']:

0     [73634_913786_M-34-1-B-b-3-1.tif]
1    [73121_877737_M-34-41-D-b-3-1.tif]
2    [73710_920337_M-33-21-C-b-3-3.tif]
3     [72972_843871_M-34-2-B-d-2-4.tif]
4    [73864_954099_M-34-60-A-d-3-1.tif]
Name: 1_5000_pi025, dtype: object

What I want?

If some rows are the same according to 'lokalnyid', 'powiat', 'status_bdo', 'kategoria_', 'funkcja_og', 'funkcja_sz', 'zabytek', 'geometry', 'liczba_kon', group them and I would like to get lists in joined_kafs_df_and_bud_layer['1_5000_pi025'] like:

0     [73634_913786_M-34-1-B-b-3-1.tif, 73864_954099_M-34-60-A-d-3-1.tif]
 1    [73121_877737_M-34-41-D-b-3-1.tif, 73710_920337_M-33-21-C-b-3-3.tif]

1 Answers1

0

You can .apply in groupby like this

df.groupby(['lokalnyid', 'powiat', 'status_bdo', 'kategoria_', 'funkcja_og', 'funkcja_sz', 'zabytek', 'geometry', 'liczba_kon'])['1_5000_pi025'].apply(list)
Pawan Jain
  • 815
  • 3
  • 15