我正在将数据从 postgresql DB 读取到 pandas 数据帧中。在其中一列中,所有值都是整数,但有些值缺失。读取时的数据帧将尾随零附加到列中的所有值。
例如原始数据
SUBJID
1031456
1031457
1031458
我在 Dataframe 列中得到的是这个
df['SUBJID'].head()
1031456.0
1031457.0
1031458.0
我知道我可以删除它,但有多个列,我永远不知道哪一列会出现此问题。因此,在读取自身时,我想确保所有内容都被读取为字符串且没有尾随零。
我已经尝试过df = pd.read_sql('q',dtype=str)
。但它没有给出所需的输出。
请告诉我解决方案。
最佳答案
尝试将列的数据类型设置为 int,然后设置为 str。
df['SUBJID'] = df['SUBJID'].astype('int32')
df['SUBJID'] = df['SUBJID'].astype(str)
如果你想手动修复字符串,那么你可以这样做
df['SUBJID'] = df['SUBJID'].apply(lambda x: x.split(".")[0])
这应该去掉“.”及其后面的所有内容,但请确保不要在包含所需的 "."
的列上使用它。
关于python - 从数据库读取数据时如何避免 pandas 数据框列值中的尾随零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391829/