gpt4 book ai didi

python - Pandas 通过部分字符串匹配大小将列分配给数组维度错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:25 25 4
gpt4 key购买 nike

我有一个这样的数据框:

  Postcode         Country
0 PR2 6AS United Kingdom
1 PR2 6AS United Kingdom
2 CF5 3EG United Kingdom
3 DG2 9FH United Kingdom

我创建一个新列,根据部分字符串匹配进行分配:

mytestdf['In_Preston'] = "FALSE"

mytestdf

Postcode Country In_Preston
0 PR2 6AS United Kingdom FALSE
1 PR2 6AS United Kingdom FALSE
2 CF5 3EG United Kingdom FALSE
3 DG2 9FH United Kingdom FALSE

我希望通过“邮政编码”上的部分字符串匹配来分配“In_Preston”列。我尝试以下操作:

mytestdf.loc[(mytestdf[mytestdf['Postcode'].str.contains("PR2")]), 'In_Preston'] = "TRUE"

但这会返回错误“无法将大小为 3 的序列复制到维度为 2 的数组轴”

我再次查看我的代码,认为问题是我正在从数据帧的切片中选择数据帧的切片。因此我改为

mytestdf.loc[(mytestdf['Postcode'].str.contains("PR2")]), 'In_Preston'] = "TRUE"

但是我的解释器告诉我这是不正确的语法,尽管我不明白为什么。

我的代码或方法有什么错误?

最佳答案

您需要移除内部过滤器:

mytestdf.loc[mytestdf['Postcode'].str.contains("PR2"), 'In_Preston'] = "TRUE"

另一个解决方案是使用 numpy.where :

mytestdf['In_Preston'] = np.where(mytestdf['Postcode'].str.contains("PR2"), 'TRUE', 'FALSE')
print (mytestdf)
Postcode Country In_Preston
0 PR2 6AS United Kingdom TRUE
1 PR2 6AS United Kingdom TRUE
2 CF5 3EG United Kingdom FALSE
3 DG2 9FH United Kingdom FALSE

但是如果想分配 bool 值TrueFalse:

mytestdf['In_Preston'] = mytestdf['Postcode'].str.contains("PR2")
print (mytestdf)
Postcode Country In_Preston
0 PR2 6AS United Kingdom True
1 PR2 6AS United Kingdom True
2 CF5 3EG United Kingdom False
3 DG2 9FH United Kingdom False

编辑comment of Zero :

如果只想检查邮政编码的开头:

mytestdf.Postcode.str.startswith('PR2')

或者添加正则表达式 ^ 作为字符串的开头:

mytestdf['Postcode'].str.contains("^PR2")

关于python - Pandas 通过部分字符串匹配大小将列分配给数组维度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46987604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com