Python 从dataframe列创建指定长度的组

Python 从dataframe列创建指定长度的组,python,pandas,Python,Pandas,Pandas noob,我一辈子都不知道如何在不使用python函数的情况下实现一行程序(因为我正在尝试学习Pandas,感觉它可以处理这个问题)。暗示 我有一个会话语句的数据框架,我想创建一组语句,其中组大小是从列表中输入的 #utterance column in list form utterance_list = ['this', 'is', 'not', 'working'] df = pd.DataFrame({'utterances': utterance_list}) #li

Pandas noob,我一辈子都不知道如何在不使用python函数的情况下实现一行程序(因为我正在尝试学习Pandas,感觉它可以处理这个问题)。暗示

我有一个会话语句的数据框架,我想创建一组语句,其中组大小是从列表中输入的

#utterance column in list form
utterance_list = ['this', 'is', 'not', 'working']

df = pd.DataFrame({'utterances': utterance_list})

#list of desired group sizes
sizes = [1, 0, 3]

{insert missing function here}

desired output = ['this', '', 'is not working']

我不知道你所说的“没有Python函数”是什么意思,但这里有一种方法

import numpy as np

lst = ['this', 'is', 'not', 'working']
sizes = [1, 0, 3]

idx1 = np.array([0] + sizes).cumsum()[:-1]
idx2 = idx1 + np.array(sizes)

print(idx1, idx2)
# [0 1 1] [1 1 4]

res = [lst[i:j] for i, j in zip(idx1, idx2)]

print(res)
# [['this'], [], ['is', 'not', 'working']]
如果你真的需要一条直线:

res = [lst[i:i+j] for i, j in zip(np.array([0] + sizes).cumsum()[:-1], np.array(sizes))]

此解决方案仅使用
pandas
numpy

由于
pandas
将数据存储在
numpy
数组中,因此没有理由避免使用
numpy
功能

import pandas as pd, numpy as np

A = np.array(['this', 'is', 'not', 'working'])
sizes = np.array([1, 0, 3])

df = pd.DataFrame({'utterances': utterance_list})

df['utterances'] = np.split(A, sizes.cumsum())

print(df)

#            utterances
# 0              [this]
# 1                  []
# 2  [is, not, working]
# 3                  []

谢谢,这不是没有帮助,但我希望实现使用熊猫专用。这不能通过groupby或其他什么东西实现吗?@xoihiox,不确定-您可以等待另一个答案。