如何预防熊猫';从csv文件中向记录添加额外小数的简单方法是什么-python
我有一个Python函数,它读取csv文件并以元组的形式返回csv中的每一行 我正在使用Python的Pandas库来实现这一点 问题是在Pandas返回元组后,它会在看起来像整数的记录后面附加一个额外的小数点。e、 g如何预防熊猫';从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
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
******