如何预防熊猫';从csv文件中向记录添加额外小数的简单方法是什么-python

如何预防熊猫';从csv文件中向记录添加额外小数的简单方法是什么-python,python,csv,pandas,Python,Csv,Pandas,我有一个Python函数,它读取csv文件并以元组的形式返回csv中的每一行 我正在使用Python的Pandas库来实现这一点 问题是在Pandas返回元组后,它会在看起来像整数的记录后面附加一个额外的小数点。e、 g1001变为1001.0 示例csv文件: key1, key2 a, '1001' b, '2002' 代码如下所示: import pandas as pd file_content_df = pd.read_csv(path_to_csv_file) for each

我有一个Python函数,它读取csv文件并以元组的形式返回csv中的每一行

我正在使用Python的Pandas库来实现这一点

问题是在Pandas返回元组后,它会在看起来像整数的记录后面附加一个额外的小数点。e、 g
1001变为1001.0

示例csv文件:

key1, key2
a, '1001'
b, '2002'
代码如下所示:

import pandas as pd

file_content_df = pd.read_csv(path_to_csv_file)

for each_row in file_content_df.itertuples():
    row_item1, row_item2 = each_row
    print row_item1  # Prints 'a'
    print row_item2  # Prints 1001.0 (Desired result is 1001)
有办法控制这种行为吗

首先可以检查列
key2
是否为
int
float
object
,然后可以通过
每行[1]
使用第二项,通过
每行[2]
使用第三项:

print df
  key1  key2
0    a  1001
1    b  2002

print df.dtypes
key1    object
key2     int64
dtype: object

for each_row in df.itertuples():
    print each_row
    print each_row[1]
    print each_row[2]
    print '******'

Pandas(Index=0, key1='a', key2=1001)
a
1001
******
Pandas(Index=1, key1='b', key2=2002)
b
2002
******
如果列
key2
dtypes
object
并且
df
类似于:

print df
  key1    key2
0    a  '1001'
1    b  '2002'

print df.dtypes
key1    object
key2    object
dtype: object

#remove ' and cast to integer
df['key2'] = df['key2'].str.strip("'").astype(int)

print df.dtypes
key1    object
key2     int32
dtype: object

for each_row in df.itertuples():
    print each_row
    print each_row[1]
    print each_row[2]
    print '******'

Pandas(Index=0, key1='a', key2=1001)
a
1001
******
Pandas(Index=1, key1='b', key2=2002)
b
2002
******