熊猫数据框在特定列值之后过滤n个后续行

时间:2020-02-23 21:04:03

标签: python pandas dataframe

我有一个这样的熊猫数据框:

load '< echo "\$DATA << EOD" && echo 1 2 3; echo 4 5 6; echo 7 8 9 && echo "EOD"'
print $DATA
plot $DATA using 1:2 pt 5, $DATA using 1:3 pt 7 

我想按句子将其分组,例如返回:

       Sentence #           Word     Tag
0     Sentence: 1           This       O
1             NaN             is       O
2             NaN              a       x
3             NaN           test       O
4     Sentence: 2           This       O
5             NaN             is       x
6             NaN        another       x
7             NaN           test       O
...

还可以获得每个句子中所有标记有“ x”的单词的列表,例如:

[['This is a test'], ['This is another test'], ...]

我一直在尝试找到使用group()失败的方法。解决问题的最佳方法是什么?谢谢

1 个答案:

答案 0 :(得分:0)

解决了!我用过:

df = df.fillna(method='ffill')

向前传播非空值。然后我用以下命令计算句子:

df1 = df.groupby('Sentence #')['Word'].apply(lambda x: ' '.join(x))

要获取带标签的单词:

df2 = df.groupby('Sentence #', as_index=False).apply(lambda g: g[g['Tag'] == 'x'])
df2 = df2.groupby('Sentence #')['Word'].apply(lambda x: ','.join(x))

不确定这是否是最有效的解决方案。