Python 获取dataframe列中值的长度

Python 获取dataframe列中值的长度,python,python-2.7,pandas,Python,Python 2.7,Pandas,我试图获得下面提到的数据帧中每个zipCd值的长度。当我运行下面的代码时,每条记录都会得到958。我希望得到更像“4”的东西。有人知道问题是什么吗 Code: zipDfCopy['zipCd'].str.len() Data: print zipDfCopy[1:5] Zip Code Place Name State State Abbreviation County \ 1 544 Holtsville New York

我试图获得下面提到的数据帧中每个zipCd值的长度。当我运行下面的代码时,每条记录都会得到958。我希望得到更像“4”的东西。有人知道问题是什么吗

Code:
zipDfCopy['zipCd'].str.len()

Data:
print zipDfCopy[1:5]

   Zip Code  Place Name          State State Abbreviation     County  \
1       544  Holtsville       New York                 NY    Suffolk   
2      1001      Agawam  Massachusetts                 MA    Hampden   
3      1002     Amherst  Massachusetts                 MA  Hampshire   
4      1003     Amherst  Massachusetts                 MA  Hampshire   

   Latitude  Longitude                                              zipCd  
1   40.8154   -73.0451  0          501\n1          544\n2         1001...  
2   42.0702   -72.6227  0          501\n1          544\n2         1001...  
3   42.3671   -72.4646  0          501\n1          544\n2         1001...  
4   42.3919   -72.5248  0          501\n1          544\n2         1001...  

一种方法是转换为字符串并使用内置的
len
使用
pd.Series.map

用于向量化字符串函数,而用于更改列类型

import pandas as pd

df = pd.DataFrame({'ZipCode': [341, 4624, 536, 123, 462, 4642]})

df['ZipLen'] = df['ZipCode'].astype(str).map(len)

#    ZipCode  ZipLen
# 0      341       3
# 1     4624       4
# 2      536       3
# 3      123       3
# 4      462       3
# 5     4642       4
更明确的替代方法是使用
np.log10

df['ZipLen'] = np.floor(np.log10(df['ZipCode'].values)).astype(int) + 1

谢谢你这么快回复我。当我试着打字的时候,它仍然给了我每一张958的记录。但是,这工作正常:zipDfCopy['Zip Code'].apply(str).map(len)好的,这很奇怪-如果您想将一列整数转换为字符串df[col].astype(str)当然可以,因此,您的数据类型可能存在问题。您在列
zipCd
上运行此命令,该列的值似乎为
1001…
,这意味着字符串的长度远远大于4。这些省略号意味着字符串比列的宽度长,熊猫将省略号放在那里,而不是显示整个字符串。要么您使用了错误的列,要么您的数据被弄乱了。