Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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:';int';对象没有属性';条状';在熊猫中加载excel文件时_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 如何修复AttributeError:';int';对象没有属性';条状';在熊猫中加载excel文件时

Python 如何修复AttributeError:';int';对象没有属性';条状';在熊猫中加载excel文件时,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我试图在pandas中加载一个excel文件,但出现以下错误- AttributeError:“int”对象没有属性“strip” 为了便于理解,我从excel中取出了下面一行以及标题- Row ID Order ID Order Date Ship Date Ship Mode Customer ID Customer Name Segment Country/Region City State Postal Code Region Product ID

我试图在pandas中加载一个excel文件,但出现以下错误-

AttributeError:“int”对象没有属性“strip”

为了便于理解,我从excel中取出了下面一行以及标题-

 Row ID Order ID    Order Date  Ship Date   Ship Mode   Customer ID Customer Name   Segment Country/Region  City    State   Postal Code Region  Product ID  Category    Sub-Category    Product Name    Sales   Quantity    Discount    Profit

    1   CA-2018-152156  08-11-2018  11-11-2018  Second Class    CG-12520    Claire Gute Consumer    United States   Henderson   Kentucky    42420   NorthEAST   FUR-BO-10001798 Finance Bookcases   Bush Somerset Collection Bookcase   261.96  2   0   41.9136
这是全部代码-

local_path= '../../data/RetailStore.xlsx'
out_path= '../../out/hyperstore.csv'

def load_retail_data(local_path,sheet_name):
    return pd.read_excel(
        local_path,
        header=4,
        sheet_name=sheet_name,
        parse_dates=True
    )

def clean_headers(data_frame:pd.DataFrame) -> pd.DataFrame:
    data_frame=data_frame.rename(columns=lambda x:x.strip())
    data_frame=data_frame.rename(columns=lambda x:x.replace('\n',' '))
    data_frame=data_frame.rename(columns=lambda x:x.replace("'",' '))
    data_frame=data_frame.rename(columns=lambda x:x.replace('  ',' '))
    return data_frame

def filter_ship_mode(df):
    return df[(df[ColumnsStore.ship_mode]!= 'Standard Class') & (df[ColumnsStore.ship_mode]!='Second Class')]


def calc_retail_data(local_path,sheet_name):
    retail_data=load_retail_data(local_path,sheet_name)
    retail_clean_headers=clean_headers(retail_data)
    retail_filtered=filter_ship_mode(retail_clean_headers)
    return retail_filtered


if __name__=="__main__":
    df_retail_data=calc_retail_data(local_path,'Orders')
    df_retail_data.to_csv(out_path,index=False)

您可以将列标题类型转换为字符串

def clean_头(数据帧:pd.DataFrame)->pd.DataFrame:
df.columns=df.columns.astype(str)
data\u frame=data\u frame.rename(columns=lambda x:x.strip())
...
或者只是转义int类型

def clean_头(数据帧:pd.DataFrame)->pd.DataFrame:
df.columns=df.columns.astype(str)
data\u frame=data\u frame.rename(列=lambda x:x.strip(),如果是instance(x,str)else x)
#对其他收割台清洁功能执行相同操作。
...

col_dict=dict(zip(df.columns.values,[str(col.strip().replace('\n','')).replace('''','').replace(''),for col in list(df.columns.values)])->创建col dict,然后使用此dict重命名列我应该在代码中写这一行吗?上面的建议,基本上,您的问题是
clean_headers
下的这一行:
data_frame=data_frame.rename(columns=lambda x:x.strip())
-->您试图
strip()
一个整数的
x
值(例如,迭代列号,而不是名称)@Aelarion那么什么是正确的呢?