删除字符串的一部分 pandas DataFrame

Deleting part of a string pandas DataFrame

背景:
我有以下pandas数据框:

Objective:
推文列中的每个字段都包含推文(呃!)。我正在尝试做两件事:

我试过的:
我已经尝试过诸如 split_string = tweets_df.split("InSight", 1) 之类的东西,但我似乎无法编写任何可以拆分字符串的一部分的代码,而只是一个分隔符。

如有任何建议,我们将不胜感激。

尝试使用:

pandas.DataFrame.applymap 按元素将函数应用于 Dataframe。

此方法应用一个接受标量的函数,returns 将标量应用于 DataFrame 的每个元素。

new_df = df.filter(['tweet']).applymap(lambda x: x[x.find('InSight'):])
dates_df = df.filter(['tweet']).applymap(lambda x: x[x.find('-') + 1:x.find('InSight')])

您需要将修剪后的列分配回原始列而不是进行子集化,而且 str.replace 方法似乎没有 to_replace 和值参数。它有 pat 和 repl 参数:

示例:

df["Date"] = df["Date"].str.replace("\s:00", "")

df
#   ID       Date 
#0   1  8/24/1995
#1   2   8/1/1899

要在 InSight 之后提取字符串,您可以使用正向先行正则表达式

df['text'] = df['tweet'].str.replace('.*(?=InSight)', '', regex=True)

要以提供的格式提取日期,请使用 str.extract 和正后视正则表达式

df['date'] = df['tweet'].str.extract('(?<=-)(\w{3} \d{2})')

输出

                                               tweet            text    date
0  Mars Weather@Marsweatherreport-Jul 15InSight s...  InSight sol 58  Jul 15