带有read_csv的pandas数据框无法处理某些列标题?

时间:2016-10-04 21:59:25

标签: python pandas dataframe

//解决了,下面是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

这是熊猫的限制,还是我弄错了?

0 个答案:

没有答案