【发布时间】:2013-03-09 20:36:35
【问题描述】:
我一直在调试我的脚本,并将我的问题缩小到几行我认为会导致我的问题的代码。我正在从 3 个 csv 文件中读取数据,从 SQL Server 中的存储过程中提取数据,并将数据从这两个文件导出到 excel 文件中以绘制 cmparisons。我遇到的问题是我的源文件正在生成重复项(每个源文件中的一行)。我将打印语句放入以下数据中以查看发生了什么。
#convert district codes to strings
if dfyearfound:
df2['district_code']=df2['district_code'].apply(lambda x: str(x))
print df2['district_code'][df2.index[0]]
df2['district_type_code']=df2['district_type_code'].apply(lambda x: str(x))
print df2['district_type_code'][df2.index[0]]
if teacheryearfound:
teacherframe['district_code']=teacherframe['district_code'].apply(lambda x: str(x))
print teacherframe['district_code'][teacherframe.index[0]]
teacherframe['district_type_code']=teacherframe['district_type_code'].apply(lambda x: str(x))
print teacherframe['district_type_code'][teacherframe.index[0]]
if financialyearfound:
financialframe['district_code']=financialframe['district_code'].apply(lambda x: str(x))
print financialframe['district_code'][financialframe.index[0]]
financialframe['district_type_code']=financialframe['district_type_code'].apply(lambda x: str(x))
print financialframe['district_type_code'][financialframe.index[0]]
打印语句给我以下输出:1、1、1、3.0、0012、1
所有 dist_codes 的长度应为 4,并且它们在源文件中从 1 位到 4 位不等。在数据库中,它们都是 4 位数字(例如:0001、0012)。区类型为1位或2位,在数据库中均为2(例:01、03)。我不确定为什么上面的字符串转换不起作用。我打算编写一个函数来格式化 District_code 和 District_type_code,但我不想硬编码长度,我写的函数我无法开始工作:
#function for formating district codes
def formatDistrictCodes(code):
dist=code
dist.zfill(4)
return dist
formatDistrictCodes(districtformat)
【问题讨论】:
-
我不明白你的问题是什么。另外,
apply方法是什么? -
lambda x: str(x),也可以直接传str。 -
你在使用
pandas吗?如果是这样,请相应地标记您的问题。 -
尝试返回 dist.zfill(4)。 zfill 不会改变原始字符串,而是返回一个新的填充字符串。
-
pandas通常从csv文件中推断类型。所以你漂亮的字符串0001、0002被转换为整数。
标签: python string debugging pandas