2024-04-25 19:30:18 发布
网友
我有一个数据框,其中每一行都是一个单词或标点符号。我想遍历数据帧,每当一行包含标点符号时,我就想把它和前一行结合起来。你知道吗
例如,我想转换:
word 0 hello 1 , 2 how 3 are 4 you 5 ?
分为:
word 0 hello, 2 how 3 are 4 you?
谢谢。你知道吗
另一种方法,使用.shift(-1)连接到前一行:
.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"]]
测向:
您可以使用isin和cumsum:
isin
cumsum
# 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
match
df.groupby((~df.word.str.match('\W')).cumsum(), as_index=False).sum() word 0 hello, 1 how 2 are 3 you?
而且,没有as_index=True
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?
另一种方法,使用
.shift(-1)
连接到前一行:测向:
您可以使用
isin
和cumsum
:输出:
match
和cumsum
isin
而且,没有
as_index=True
相关问题 更多 >
编程相关推荐