如何解决range1:lendf将NaN分配给数据帧中的最后一行
我的代码有这个奇怪的问题。我正在尝试使用此代码为我的数据框生成自动ID
df['id'] = pd.Series(range(1,(len(df)+1))).astype(str).apply('{:0>8}'.format
现在,len(df)等于799734 但是df ['id']是第77998行之后的Nan
我尝试使用以下命令打印值:
[print(i) for i in range(1,(len(df)+1))]
在第一次尝试中,它在77998个值之后打印“无”。第二次尝试通常将所有值打印到末尾。但数据框的最后一行仍然是Nan。
可能与内存有关吗?我没有任何提示。请帮我解决这个问题。
解决方法
缺少值意味着Series
和DataFrame
中存在不同的索引值,对于正确的工作需求是相同的。
因此需要将df.index
传递给Series
构造函数:
df['id'] = pd.Series(range(1,(len(df)+1)),index=df.index).astype(str).apply('{:0>8}'.format
或带有分配range
的2行解决方案:
df['id'] = range(1,(len(df)+1))
df['id'] = df['id'].astype(str).apply('{:0>8}'.format
或在DataFrame中为Series
创建默认索引值:
df = df.reset_index(drop=True)
df['id'] = pd.Series(range(1,(len(df)+1))).astype(str).apply('{:0>8}'.format
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。