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

dxxyhpgq  于 2022-12-09  发布在  其他
关注(0)|答案(2)|浏览(191)

我有一个简化的数据框架:

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

我如何使用Pandas的能力来识别 Dataframe 中任何有额外:00的日期并将其删除。
你知道怎么解决这个问题吗?
我尝试过这种语法,但没有帮助:

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

输出应类似于:

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

lsmepo6l1#

你需要将修剪后的列重新赋值给原始列,而不是进行子集化,而且str.replace方法似乎没有to_replacevalue参数,而是有patrepl参数:

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

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

epggiuax2#

要将其应用于整个 Dataframe ,我需要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', '')

相关问题