如何使用pandas.read_csv从列表中删除第一个元素?

时间:2018-12-29 04:14:41

标签: python pandas

我有:

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

那么如何删除第一行?还是更好-有更好的地图绘制方法吗?

3 个答案:

答案 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