我有:
X = pd.read_csv(
"data/train.csv", header=0, usecols=['Type', 'Age', 'Breed1', 'Breed2', 'Gender', 'Color1', 'Color2', 'Color3', 'MaturitySize', 'FurLength', 'Vaccinated', 'Dewormed', 'Sterilized', 'Health', 'Quantity', 'Fee', 'VideoAmt', 'PhotoAmt'])
Y = pd.read_csv(
"data/train.csv", header=0, usecols=['AdoptionSpeed'])
print(Y)
这给出了:
AdoptionSpeed
0 2
1 0
2 3
3 2
4 2
5 2
6 1
7 3
我假设第一列是索引,第二列是AdoptionSpeed
。然后,我想对值进行map
,但是当我做类似的事情时:
Y = map(lambda y: float(y) / 4, Y)
我得到一个错误:
ValueError: could not convert string to float: AdoptionSpeed
那么如何删除第一行?还是更好-有更好的地图绘制方法吗?
答案 0 :(得分:3)
使用:
Y = map(lambda y: float(y) / 4, Y['AdoptionSpeed'].tolist())
使其正常工作。
更好:
Y = Y.apply(lambda y: float(y) / 4)
答案 1 :(得分:1)
使用熊猫时,请勿使用这种地图。使用按列操作。或熊猫的apply
类似这样的划分方式:
# cast type
Y['AdoptionSpeed'] = Y['AdoptionSpeed'].astype(float)
# devide by 4, assign to a new columns
Y['AdoptionSpeed_4'] = Y['AdoptionSpeed'] / 4
# or apply
Y['AdoptionSpeed_4'] = Y['AdoptionSpeed'].apply(lambda v: v / 4)
答案 2 :(得分:1)
更像
df.AdoptionSpeed.map(lambda x : x/4)
Out[52]:
0 0.50
1 0.00
2 0.75
3 0.50
4 0.50
5 0.50
6 0.25
7 0.75
Name: AdoptionSpeed, dtype: float64