//解决了,下面是EdChum的评论,我得到了要加载的文件,但仍然没有100%确定问题是什么//
我刚开始使用pandas等,我在阅读tab delimeted'csv'文件时遇到了问题。问题如下;
我的csv中的行看起来像这样;第一行是列名。 (在此帖子中添加了“和'列名称的转义,以防止论坛将它们视为字符串分隔符,并且#被转义以防止它被视为注释分隔符)
Reported A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \" a b c d e f g h i j k l m n o p q r s t u v w x y z ! $ % & * ( ) _ + - = { } [ ] : @ ~ ; \' \# < > ? , . / Class
c-3785762359-20140807-06 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
spoaxclor1-bkp_Sun020820H00Mbpmp_cumu0_df_BPMP_21888_1.bus 1 1 0 0 0 0 0 1 0 0 0 0 3 1 0 2 0 1 1 0 0 0 0 0 0 0 0 1 3 2 1 0 1 0 0 0 0 1 1 2 1 2 4 0 1 2 0 4 0 0 1 0 0 0 0 0 0 0 0 0 6 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1
BCC412_h7rcmumj_1_1 1 1 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 2 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
spolxpdb4-bkp_Wed110503H00Mhrprd_af_HRPRD_25407_1.bus 1 0 0 1 0 0 0 2 0 0 0 0 2 1 0 1 0 3 0 0 0 0 1 0 0 0 0 1 3 0 3 1 1 0 1 0 0 1 1 0 0 1 4 0 2 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 5 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1
当我使用
阅读本文时df=pd.read_csv(outname,sep="\t",names=["Reported"]+char_list+["Class"])
其中char_list是用作标题的所有单个字符的列表。
加载时我收到警告;
sys:1:DtypeWarning:专栏(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25,26,27)有混合类型。在导入时指定dtype选项或设置low_memory = False。
我不确定该警告是否与我的问题有关。问题是pandas似乎没有处理列名称为'$'或'('etc ..的列中的值,如
所示print df.std()
[8 rows x 81 columns]
A 0.964273
B 0.954714
C 0.799320
D 0.681608
E 0.761770
F 0.592568
G 0.378890
H 0.443973
I 0.545314
J 0.344022
K 0.499129
L 0.721499
M 0.497127
N 0.561301
O 0.980225
P 1.367463
Q 0.620526
R 0.821490
S 1.090850
T 0.688917
U 0.830025
V 0.441163
W 0.110650
X 0.392460
Y 0.197976
Z 0.215753
" 0.007530
a 0.085073
b 0.081841
c 0.037995
...
y 0.542253
z 0.524417
! 0.271538
$ NaN
% NaN
& NaN
* NaN
( NaN
) NaN
_ NaN
+ NaN
- NaN
= NaN
{ NaN
} NaN
[ NaN
] NaN
: NaN
@ NaN
~ NaN
; NaN
' NaN
# NaN
< NaN
> NaN
? NaN
, NaN
. NaN
/ NaN
Class NaN
dtype: float64
以字母为首的列中存在的值很好(连同一些非字母字符),但是大多数具有非字母字符标题的列似乎没有得到正确处理,并且计算返回NaN
这是熊猫的限制,还是我弄错了?