我有一个这样的熊猫数据框:
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()失败的方法。解决问题的最佳方法是什么?谢谢
答案 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))
不确定这是否是最有效的解决方案。