【问题标题】:Pandas extract multiple columns熊猫提取多列
【发布时间】:2016-10-20 00:17:30
【问题描述】:

使用 Pandas 我正在向 DataFrame 添加新列:

df["Year"] = df["concat"].str.extract("(\d\d\d\d$)", expand=False)
df["Month"] = df["concat"].str.extract("(\d\d)\_\d\d\d\d$", expand=False)
df["Measure"] = df["concat"].str.extract("^(.*)\_\d\d\_\d\d\d\d$", expand=False)

这可行,但速度很慢。我正在考虑一步完成所有 3 项操作(希望这会提高性能):

df["Measure", "Year", "Month"] = (df["concat"].str.extract("^(?P<Measure>.*)\_(?P<Month>\d\d)\_(?P<Year>\d\d\d\d)$", expand=True))

但这不起作用(ValueError:错误的项目数通过 3,位置意味着 1)。

如何使其工作或如何有效地提取此信息?

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

您将 3 个单独的值作为 df["Measure", "Year", "Month"] 传递到您的 df 引用中。 "Measure""Year""Month" 而不是单个数组 ["Measure","Year","Month"]。它应该看起来像 df[["Measure", "Year", "Month"]]

或者,您可以使用 pandas 连接函数。

df2= df["concat"].str.extract("^(?P<Measure>.*)\_(?P<Month>\d\d)\_(?P<Year>\d\d\d\d)$", expand=True)
pd.concat([df,df2],axis = 1)

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 2022-10-15
    • 2018-01-23
    • 2023-03-11
    • 1970-01-01
    • 2021-10-22
    • 2018-02-09
    • 2023-02-25
    • 2019-05-02
    相关资源
    最近更新 更多