Python 如何删除Dataframe列中字符串的子字符串?

Python 如何删除Dataframe列中字符串的子字符串?,python,regex,string,pandas,dataframe,Python,Regex,String,Pandas,Dataframe,我有一个简化的数据帧: ID, Date 1 8/24/1995 2 8/1/1899 :00 如何使用pandas的功能识别数据帧中任何具有额外:00的日期并将其删除 你知道怎么解决这个问题吗 我尝试过这种语法,但没有帮助: df[df["Date"].str.replace(to_replace="\s:00", value="")] 输出应如下所示: ID, Date 1 8/24/1995 2 8/1/1899 您需要将修剪后的列重新分配给原始列,而不是进行子集设置,而且str.r

我有一个简化的数据帧:

ID, Date
1 8/24/1995
2 8/1/1899 :00
如何使用pandas的功能识别数据帧中任何具有额外
:00
的日期并将其删除

你知道怎么解决这个问题吗

我尝试过这种语法,但没有帮助:

df[df["Date"].str.replace(to_replace="\s:00", value="")]
输出应如下所示:

ID, Date
1 8/24/1995
2 8/1/1899

您需要将修剪后的列重新分配给原始列,而不是进行子集设置,而且
str.replace
方法似乎没有
to_replace
value
参数。它具有
pat
repl
参数:

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

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

要将此应用于整个数据帧,我需要
stack
然后
unstack

df.stack().str.replace(r'\s:00', '').unstack()

功能化 例子



您是否自己创建数据框?因为您可以在制作df之前删除无关的
:00
。我正在使用
pd.read.csv()
将.csv文件作为数据帧读取。。。但我注意到,在将某些日期作为数据帧读取之前,它们实际上有一些无关的“:00”
def dfreplace(df, *args, **kwargs):
    s = pd.Series(df.values.flatten())
    s = s.str.replace(*args, **kwargs)
    return pd.DataFrame(s.values.reshape(df.shape), df.index, df.columns)
df = pd.DataFrame(['8/24/1995', '8/1/1899 :00'], pd.Index([1, 2], name='ID'), ['Date'])

dfreplace(df, '\s:00', '')
rng = range(5)
df2 = pd.concat([pd.concat([df for _ in rng]) for _ in rng], axis=1)

df2
dfreplace(df2, '\s:00', '')