Name Team Number Position Age Height Weight College Salary
1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0
2 John Holland Boston Celtics 30.0 SG 2 7.0 6-5 205.0 Boston University NaN嗨,我有这个表,我想把新列中的高度从脚转换成CM,高度列RN也不是浮点数,所以我需要先提取它,然后对数字进行操作。
德克斯
发布于 2021-04-29 10:17:04
使用str函数和点
一种可能更快的方法(矢量化)是使用str函数。
您想要执行的操作可以通过在高度列中的两个元素和2个转换乘数之间应用一个点积来完成。
英尺,英寸@ 30.48,2.54 =英尺*30.48+英寸*2.54
columns.
str.split将字符串拆分为一个列表。
apply(pd.Series)将列表拆分为2个单独的
astype(int),将每个单元格转换为int
dot使用转换multipliers.在每一行上执行点积
conversions = [30.48, 2.54]
df['new'] = df['Height'].str.split('-').apply(pd.Series).astype(int).dot(conversions)0 198.12
1 167.64
2 35.56
dtype: float64使用lambda函数和点
如果您对lambda函数比较满意,下面是相同的代码-
conversions = [30.48, 2.54]
df['new'] = df['Height'].apply(lambda x: pd.Series(map(int, x.split('-'))).dot(conversions))0 198.12
1 167.64
2 35.56
dtype: float64发布于 2021-04-29 09:55:22
看起来是一个很好的步骤,首先将你的高度列分成两(英尺+英寸),然后从那里开始:
df['feet'] = df['Height'].apply(lambda x: int(x.split('-')[0]))
df['inches'] = df['Height'].apply(lambda x: int(x.split('-')[1]))
df['feet_in_cm'] = df['feet'] * 30.48
df['inches_in_cm'] = df['inches'] * 2.54
df['height_in_cm'] = df['feet_in_cm'] + df['inches_in_cm']发布于 2021-04-29 09:56:02
假设列中的唯一值是具有3个字符(number_of_feet、'-‘、number_of_inches)的字符串,那么解决方案可能如下所示:
your_table['Height'].apply(lambda x: int(x.split('-')[0])*30.48 + int(x.split('-')[1])*2.54)但是,正如我从表的第二行中看到的那样,您的字符串中有一些额外的字符,这可能需要额外的预处理(在本例中是空格,但它们不会影响代码--字符串应该很容易被更改为整数)。
https://stackoverflow.com/questions/67314664
复制相似问题