我有一个简化的数据框架:
ID, Date 1 8/24/1995 2 8/1/1899 :00
我如何使用Pandas的能力来识别 Dataframe 中任何有额外:00的日期并将其删除。你知道怎么解决这个问题吗?我尝试过这种语法,但没有帮助:
:00
df[df["Date"].str.replace(to_replace="\s:00", value="")]
输出应类似于:
ID, Date 1 8/24/1995 2 8/1/1899
lsmepo6l1#
你需要将修剪后的列重新赋值给原始列,而不是进行子集化,而且str.replace方法似乎没有to_replace和value参数,而是有pat和repl参数:
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
epggiuax2#
要将其应用于整个 Dataframe ,我需要stack,然后unstack
stack
unstack
df.stack().str.replace(r'\s:00', '').unstack()
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', '')
2条答案
按热度按时间lsmepo6l1#
你需要将修剪后的列重新赋值给原始列,而不是进行子集化,而且
str.replace
方法似乎没有to_replace
和value
参数,而是有pat
和repl
参数:epggiuax2#
要将其应用于整个 Dataframe ,我需要
stack
,然后unstack
功能化
示例