объединить каждые n строк в один ряд панд - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть:

pd.DataFrame({'col':['one','fish','two','fish','left','foot','right','foot']})
    col
0   one
1   fish
2   two
3   fish
4   left
5   foot
6   right
7   foot

Я хочу объединить каждые n строк (здесь каждые 4) и сформировать новый фрейм данных:

pd.DataFrame({'col':['one fish two fish','left foot right foot']})
    col
0   one fish two fish
1   left foot right foot

Я использую Pyhton и pandas

Ответы [ 2 ]

3 голосов
/ 05 ноября 2019

Если есть значение по умолчанию RangeIndex, используйте целочисленное деление с совокупностью join:

print (df.groupby(df.index // 4).agg(' '.join))
#for not RangeIndex create helper array
#print (df.groupby(np.arange(len(df)) // 4).agg(' '.join))
                    col
0     one fish two fish
1  left foot right foot

Если хотите указать столбец col:

print (df.groupby(df.index // 4)['col'].agg(' '.join).to_frame())
0 голосов
/ 05 ноября 2019

Попробуйте groupby:

df['col'].groupby(np.repeat(np.arange(len(df)), 4)[:len(df)]).agg(' '.join)

Вывод:

0       one fish two fish
1    left foot right foot
Name: col, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...