0

我有以下熊猫数据框:

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)

在此处输入图像描述

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

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

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

这有可能吗?对不起,我对熊猫很陌生。

4

1 回答 1

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 分组。
  • 接下来,使用groupbywithcumcount在每个组内递增
  • 最后,使用set_indexunstack重塑数据框。
于 2019-11-11T20:28:46.567 回答