我正在使用pandas库读取一些CSV数据.在我的数据中,某些列包含字符串.字符串"nan"是可能的值,空字符串也是如此.我设法让大熊猫把"nan"作为一个字符串来读,但我无法弄清楚如何让它不读取空值作为NaN.这是示例数据和输出
One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
One Two Three
0 a 1 one
1 b 2 two
2 NaN 3 three
3 d 4 nan
4 e 5 five
5 nan 6 NaN
6 g 7 seven
Run Code Online (Sandbox Code Playgroud)
它正确地写着"男"为字符串"南",但仍读取空单元格作为NaN的.我想传递str的converters参数read_csv(带converters={'One': str})),但它仍然读取空单元格作为NaN的.
我知道读书,和fillna后,我可以填补值,但真的没有办法告诉大家,在一个特定的CSV列空单元格应该被解读为空字符串,而不是NaN的熊猫吗?
我有一个#-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自动转换类型?
我正在读取的.csv文件包含值为“ NA”的单元格。熊猫会自动将其转换为NaN,这是我不想要的。我知道该keep_default_na=False参数,但这会将列的dtype更改为object这意味着pd.get_dummies无法正常工作。
有什么方法可以防止熊猫在不更改dtype的情况下将“ NA”读取为NaN吗?
我的问题与此相关。我有一个名为“test.csv”的文件,其中“NA”作为 的值region。我想将其读为“NA”,而不是“NaN”。但是,test.csv 中的其他列中缺少值,我想将其保留为“NaN”。我怎样才能做到这一点?
# test.csv looks like this:
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
import pandas as pd
# This reads NA as NaN
df = pd.read_csv(test.csv)
df
region date expenses
0 NaN 1/1/2019 53
1 EU 1/2/2019 NaN
# This reads NA as NA, but doesn't read missing expense as NaN
df = pd.read_csv('test.csv', keep_default_na=False, na_values='_')
df
region date expenses
0 NA 1/1/2019 53
1 EU 1/2/2019
# What I want:
region date expenses
0 NA 1/1/2019 53
1 EU 1/2/2019 …Run Code Online (Sandbox Code Playgroud) 我正在为python中的一个小应用程序编写代码,我意识到当我的导入数据函数中出现错误时,文件(txt,dat,csv ...)包含缺少值,如NAN或"NAN"中的某些数据,如果这些值写为nan或NaN,则导入数据没有问题.
例如
06.02.2011 00:10:00 NAN 43 30 2 37 42 30 2 34 41 19 4 302 5 306 8 69 2810 2811 2810 974 46 130
06.02.2011 00:20:00 36 41 28 2 36 42 27 2 35 42 26 3 295 8 298 8 69 2811 2811 2811 974 46 130
Run Code Online (Sandbox Code Playgroud)
第一行中的值NAN将引发错误,因为它被视为数据中的字符串
虽然具有nan值的文件被认为是缺失值,因此没有问题
06.02.2011 00:10:00 nan 43 30 2 37 42 30 2 34 41 19 4 302 5 306 8 69 2810 2811 2810 974 46 130 …Run Code Online (Sandbox Code Playgroud)