我有以下熊猫数据框:
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]]
这有可能吗?抱歉,我刚接触熊猫。
答案 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分组。groupby
与cumcount
结合使用以在每个组中递增set_index
和unstack
重塑数据框。