Python 获取dataframe列中值的长度
我试图获得下面提到的数据帧中每个zipCd值的长度。当我运行下面的代码时,每条记录都会得到958。我希望得到更像“4”的东西。有人知道问题是什么吗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
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。这些省略号意味着字符串比列的宽度长,熊猫将省略号放在那里,而不是显示整个字符串。要么您使用了错误的列,要么您的数据被弄乱了。