Python 从dataframe列创建指定长度的组
Pandas noob,我一辈子都不知道如何在不使用python函数的情况下实现一行程序(因为我正在尝试学习Pandas,感觉它可以处理这个问题)。暗示 我有一个会话语句的数据框架,我想创建一组语句,其中组大小是从列表中输入的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
#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,不确定-您可以等待另一个答案。