根据一列对熊猫元素进行分组

时间:2019-11-11 20:13:56

标签: python-3.x pandas

我有以下熊猫数据框:

import pandas as pd
data = {'Sentences':['Sentence1', 'Sentence2', 'Sentence3', 'Sentences4', 'Sentences5', 'Sentences6','Sentences7', 'Sentences8'],'Time':[1,0,0,1,0,0,1,0]}
df = pd.DataFrame(data)
print(df)

enter image description here

我想知道如何根据“时间”列提取所有“句子”。我想收集从第一个“ 1”到最后一个“ 0”的所有“句子”。

也许预期的输出会更好地解释它:

[[Sentences1,Sentences2,Sentences3],[Sentences4,Sentences5,Sentences6],[Sentences7,Sentences8]]

这有可能吗?抱歉,我刚接触熊猫。

1 个答案:

答案 0 :(得分:1)

尝试一下:

s = df['Time'].cumsum()
df.set_index([s, df.groupby(s).cumcount()])['Sentences'].unstack().to_numpy().tolist()

输出:

[['Sentence1', 'Sentence2', 'Sentence3'],
 ['Sentences4', 'Sentences5', 'Sentences6'],
 ['Sentences7', 'Sentences8', nan]]

详细信息:

  • 使用cumsum按时间= 1和以下时间= 0分组。
  • 接下来,将groupbycumcount结合使用以在每个组中递增
  • 最后,使用set_indexunstack重塑数据框。