Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python `AttributeError`尝试连接数据帧中的两列时_Python_Pandas_Dataframe - Fatal编程技术网

Python `AttributeError`尝试连接数据帧中的两列时

Python `AttributeError`尝试连接数据帧中的两列时,python,pandas,dataframe,Python,Pandas,Dataframe,我正在导入下面的数据库,并尝试创建一个名为“street”的新列,该列将一个数字列和一个字符串列连接起来。然而,我得到了“属性错误”。数据库如下所示: 下面是我的代码: import pandas as pd path_to_data = "C:\\Users\\BI Dashboard\\" data_file_name = 'Flint_Water_Residential_Testing_revised.csv' dat = pd.read_csv(path_to_data + data_

我正在导入下面的数据库,并尝试创建一个名为“street”的新列,该列将一个数字列和一个字符串列连接起来。然而,我得到了“属性错误”。数据库如下所示:

下面是我的代码:

import pandas as pd
path_to_data = "C:\\Users\\BI Dashboard\\"
data_file_name = 'Flint_Water_Residential_Testing_revised.csv'
dat = pd.read_csv(path_to_data + data_file_name, encoding= "ISO-8859-1")

dat.rename(columns={'Sample Number':'sample_number','Date Submitted':'date_submitted','Analysis (Lead)':'lead_analysis',
        'Lead (ppb)':'lead_ppb','Analysis (Copper)':'copper_analysis', 'Copper (ppb)':'copper_ppb',
        'Street #':'street_number', 'Street Name':'street_name','City':'city','Zip Code':'zip_code'}, inplace=True)

dat['sample_number'].fillna(' ', inplace=True)
dat['street_number'].fillna(' ', inplace=True)
dat['street_name'].fillna(' ', inplace=True)
dat['city'].fillna('FLINT', inplace=True)
dat['zip_code'].fillna(' ', inplace=True)
dat['state'] = 'MI'

dat['street'] = dat['street_number'].str.cat(dat['street_name'], sep=' ')
我从代码的最后一行得到的错误代码是:

我猜这是在抱怨“街道号码”栏不是字符串。有人能告诉我怎么修吗


非常感谢

您的
街道号
列为整数类型。您需要将其转换为字符串。您可以通过以下方式实现:


试试下面的
astype(str)
方法
dat['street']=dat['street\u number'].astype(str).cat(dat['street\u name',sep='')可以完美地工作!非常感谢。非常感谢。它起作用了!还有一个问题,如果我的代码是:
dat['address']=dat['state'].str.cat(dat['zip_code'],sep='')
这意味着它是一个字符串+int。我需要转换什么吗?@vivivi11130704我刚检查过,需要转换。我会再次执行
dat['zip_code'].astype(str)
。否则,您会得到
TypeError
。我明白了。那么这个.str做什么(在.cat之前的.str)?@vivi11130704,它允许您访问与该系列关联的字符串方法。排除
.str
,您将获得
属性错误:只能使用带有“category”数据类型的.cat访问器。这是很好的指示,它意味着那些字符串方法被绑定到访问器属性
str
dat['street'] = dat['street_number'].astype(str).str.cat(dat['street_name'], sep=' ')