相关疑难解决方法(0)

Python pandas:使用整数将数据帧输出到csv

我有一个pandas.DataFrame我想导出到CSV文件.但是,熊猫似乎写了一些值float而不是int类型.我无法找到如何改变这种行为.

构建数据框:

df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'], dtype=int)
x = pandas.Series([10,10,10], index=['a','b','d'], dtype=int)
y = pandas.Series([1,5,2,3], index=['a','b','c','d'], dtype=int)
z = pandas.Series([1,2,3,4], index=['a','b','c','d'], dtype=int)
df.loc['x']=x; df.loc['y']=y; df.loc['z']=z
Run Code Online (Sandbox Code Playgroud)

查看它:

>>> df
    a   b    c   d
x  10  10  NaN  10
y   1   5    2   3
z   1   2    3   4
Run Code Online (Sandbox Code Playgroud)

出口它:

>>> df.to_csv('test.csv', sep='\t', na_rep='0', dtype=int)
>>> for l in open('test.csv'): print l.strip('\n')
        a       b       c       d
x       10.0    10.0    0       10.0
y       1       5       2       3 …
Run Code Online (Sandbox Code Playgroud)

python csv dataframe pandas

29
推荐指数
5
解决办法
3万
查看次数

防止pandas在read_csv中自动推断类型

我有一个#-separated文件有三列:第一个是整数,第二个看起来像浮点数,但不是,第三个是字符串.我尝试将其直接加载到python中pandas.read_csv

In [149]: d = pandas.read_csv('resources/names/fos_names.csv',  sep='#', header=None, names=['int_field', 'floatlike_field', 'str_field'])

In [150]: d
Out[150]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1673 entries, 0 to 1672
Data columns:
int_field          1673  non-null values
floatlike_field    1673  non-null values
str_field          1673  non-null values
dtypes: float64(1), int64(1), object(1)
Run Code Online (Sandbox Code Playgroud)

pandas尝试智能并自动将字段转换为有用的类型.问题是我实际上并不希望它这样做(如果我这样做,我会使用这个converters论点).如何防止pandas自动转换类型?

python pandas

15
推荐指数
2
解决办法
7437
查看次数

标签 统计

pandas ×2

python ×2

csv ×1

dataframe ×1