列值不在熊猫数据框中的索引中
Posted
技术标签:
【中文标题】列值不在熊猫数据框中的索引中【英文标题】:Column value not in index in padas dataframe 【发布时间】:2021-11-12 01:56:40 【问题描述】:我正在使用带有named capturing groups 的正则表达式计算数据框中的新列,如下所示:
(df["Address Column"]
.str.extract("(?P<Address>.*\d+[\w+?|\s]\s?\w+\s+\w+),?\s(?P<Suburb>.*$)")
.apply(lambda x: x.str.title()))
但是,在调用新列“Suburb”时,我收到了 KeyError
KeyError: "['Suburb'] not in index"
样本数据:
**Address column**
4a Mcarthurs Road, Altona north
1 Neal court, Altona North
4 Vermilion Drive, Greenvale
Lot 307 Bonds Lane, Greenvale
430 Blackshaws rd, Altona North
159 Bonds lane, Greenvale
期望的输出:
Address Suburb
4a Mcarthurs Road Altona North
1 Neal court Altona North
4 Vermilion Drive Greenvale
Lot 307 Bonds Lane Greenvale
430 Blackshaws rd Altona North
159 Bonds lane Greenvale
不知道为什么我会得到这个!
对此的任何帮助将不胜感激。
提前感谢您的支持!
【问题讨论】:
请添加您的数据框样本(例如您的 pd.Series 的头部) 您好,用示例数据更新了我的问题 我无法用 pandas v1.2.4 重现您的问题。您使用的是哪个版本? 与 pandas 1.2.3 相同(在 python 中使用 pd.__version__ 检查您的版本) 我的是熊猫 1.2.4 【参考方案1】:我认为您的问题是您没有将正则表达式查询的结果分配给原始df
。
以下对我有用:
r = r"(?P<Address>.*\d+[\w+?|\s]\s?\w+\s+\w+),?\s(?P<Suburb>.*$)"
ret = df["Address Column"].str.extract(r).apply(lambda x: x.str.title())
df = pd.concat([df, ret], axis=1)
df["Suburb"]
为了完整起见,这就是我初始化df
的方式。
import pandas as pd
s = pd.Series(["4a Mcarthurs Road, Altona north",
"1 Neal court, Altona North",
"4 Vermilion Drive, Greenvale",
"Lot 307 Bonds Lane, Greenvale",
"430 Blackshaws rd, Altona North",
"159 Bonds lane, Greenvale"])
df = pd.DataFrame("Address Column": s)
以上代码将Address
和Suburb
这两个新列添加到df
:
Address Column Address Suburb
4a Mcarthurs Road, Altona north 4A Mcarthurs Road Altona North
1 Neal court, Altona North 1 Neal Court Altona North
4 Vermilion Drive, Greenvale 4 Vermilion Drive Greenvale
Lot 307 Bonds Lane, Greenvale Lot 307 Bonds Lane Greenvale
430 Blackshaws rd, Altona North 430 Blackshaws Rd Altona North
159 Bonds lane, Greenvale 159 Bonds Lane Greenvale
【讨论】:
嗨,我在“地址列”中有大约 150 个行值。我应该摄取 pd.series 中的所有行值吗?除此之外,我明天和后天可能会有不同的地址。连续吸收新的价值观将是一项乏味的工作。不仅如此,还有其他列(38)需要与我当前的 df 对齐。我怎样才能以更简单的方式做到这一点? @adey27 df 的初始化仅用于演示目的! (我没有你的数据框,所以我必须自己构建一个。)你当然跳过这部分,直接用你的 df 操作。 @adey27ret = ...
行适合您吗?你看过结果了吗?
是的,我做了那个建议。但在 Suburb 列输出中获得 NaN
是的,KeyError 消失了!从光明的一面看:)以上是关于列值不在熊猫数据框中的索引中的主要内容,如果未能解决你的问题,请参考以下文章