我正在嘗試創建一個函式 miles to KM,但結果是浮點數并且不會對其進行轉換。距離:是整數格式的列。
函式“miles_a_KM”接收引數 miles,它是一個整數列。
def miles_to_KM(miles):
MIc = 1.609344
km = miles * MIc
return(pd.DataFrame({'km':km}).fillna(0))
問題。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [8], in <cell line: 1>()
----> 1 miles_to_KM('Distance')
Input In [7], in miles_to_KM(miles)
1 def miles_to_KM(miles):
2 MIc = 1.609344
----> 3 km = miles * MIc
4 return(pd.DataFrame({'km':km}).fillna(0))
TypeError: can't multiply sequence by non-int of type 'float'
嘗試
return(pd.DataFrame({'km':km}).astype(float).fillna(0))
uj5u.com熱心網友回復:
看起來當您呼叫該函式時,您的輸入引數是一個字串。不確定您是否只想將列中的 1 個值轉換為英里,但是,要從您可能想嘗試的資料框中訪問該值miles_to_KM(dataframename.iloc[0]["Distance"]
錯誤來自嘗試將字串值乘以浮點數,這可以使用整數,例如
def mile_to_KM(miles):
MIc = 2
return MIc * miles
等mile_to_KM("Distance")
會輸出Distance Distance
。希望這會使錯誤訊息現在更有意義,因為使用浮點數乘以字串不會計算。
uj5u.com熱心網友回復:
為什么不簡單地使用pandas.Series.div
?
#dataset: http://ksgleditsch.com/data/capdist.csv
MIc = 1.60934
df["milesdist"]= df["kmdist"].div(MIc).round(2)
# 輸出 :
print(df)
ida idb kmdist milesdist
0 UKR TUR 1231 764.91
1 FIN NIC 9962 6190.12
2 SUR BUI 9430 5859.54
3 CAN ZAN 12416 7714.96
4 SYR MSI 13081 8128.18
5 BEL CHN 8080 5020.69
6 NEP NTH 7034 4370.74
7 GRG GFR 3119 1938.06
8 TKM THI 4953 3077.66
9 AZE BOS 2611 1622.40
uj5u.com熱心網友回復:
解決問題
def miles_to_KM(miles):
MIc = 1.609344
return(miles * MIc)
df['kilometer'] = df['Distance'].transform(miles_to_KM)
df['kilometer'].head(3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537594.html
標籤:熊猫数据框功能
上一篇:用西班牙語為短日期創建函式