python - 编辑 DataFrame 中的值

标签 python csv pandas dataframe

我正在尝试:

将 UPC 代码的 CSV 导入到数据框中。如果 UPC 代码是 11 个字符,请在其后附加“0”。例如:19962123818 --> 019962123818

这是代码:

 #check UPC code length. If 11 characters, adds '0' before. If < 11 or > 13, throws Error
for index, row in clean_data.iterrows():
    if len(row['UPC']) == 11:
        row['UPC'] = ('0' + row['UPC'])
        #clean_data.set_value(row, 'UPC',('0' + (row['UPC']))
        print ("Edited UPC:", row['UPC'], type(row['UPC']))
    if len(row['UPC']) < 11 or len(row['UPC']) > 13:
        print ('Error, UPC length < 11 or > 13:')
        print ("Error in UPC:", row['UPC'])
        quit()

但是,当我打印数据时,原始值没有被编辑:

enter image description here

有谁知道是什么导致了这个问题?

我尝试了其他帖子中提到的 set_value 方法,但是没有用。

谢谢!


感谢矢量化方法,更清晰!但是,我收到以下错误,并且该值仍未更新:

enter image description here

最佳答案

我可以推荐一个不同的方法吗?

#identify the strings shorter than 11 characters
fix_indx = clean_data.UPC.astype(str).str.len()<11

#append these strings with a '0'
clean_data.loc[fix_indx] = '0'+clean_data[fix_indx].astype(str)

要修复其他问题,您可以类似地执行以下操作:

bad_length_indx = clean_data.UPC.astype(str).str.len()>13
clean_data.loc[bad_length] = np.nan

关于python - 编辑 DataFrame 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054147/

相关文章:

python - 在for循环中更改django表单的ID

mysql 导入 csv 文件时 CSV 输入中的列计数无效

python - 如果 df 记录是英文的,则使用 python 将其移动到另一列

python - pandas python 中一个字段与另一个字段的直方图

python - 分组 pandas 数据帧中的嵌套字典

python - 如何折叠重叠间隔[开始-结束]并保持较小?

python - 在一个 DAG 中执行顺序和并发任务

python - Keras 中的线性插值

csv - 从 CSV 中提取匹配的行

excel - 如何使用 VBA 复制 Excel 工作表中的行并将其发送到 CSV?