如何根据datafram中的条件将行与前一行合并

2024-04-25 19:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中每一行都是一个单词或标点符号。我想遍历数据帧,每当一行包含标点符号时,我就想把它和前一行结合起来。你知道吗

例如,我想转换:

word 0 hello 1 , 2 how 3 are 4 you 5 ?

分为:

word 0 hello, 2 how 3 are 4 you?

谢谢。你知道吗


Tags: 数据youhello单词arehowword标点符号
3条回答

另一种方法,使用.shift(-1)连接到前一行:

df.loc[df["word"].shift(-1).isin(list(punctuation)), "word"] = df["word"] + df["word"].shift(-1)
df = df[~df["word"].isin(list(punctuation))][["word"]]

测向:

     word
0  hello,
2     how
3     are
4    you?

您可以使用isincumsum

# list of puctuations
punctuations = set([',','?']) 

# blocks
blocks = ~df['word'].isin(punctuations)).cumsum()

# groupby
df['word'].groupby(blocks).sum()

输出:

word
1    hello,
2       how
3       are
4      you?
Name: word, dtype: object

matchcumsum

df.groupby((~df.word.str.match('\W')).cumsum(), as_index=False).sum()

     word
0  hello,
1     how
2     are
3    you?

isin

而且,没有as_index=True

from string import punctuation

df.groupby((~df.word.isin(list(punctuation))).cumsum()).sum()

        word
word        
1     hello,
2        how
3        are
4       you?

相关问题 更多 >