【问题标题】:converting feet-inch string DataFrame column to centimeters将英尺英寸字符串 DataFrame 列转换为厘米
【发布时间】:2023-01-18 23:30:25
【问题描述】:

我有一列篮球运动员的身高:

0       6-10
1        6-9
2        7-2
3        6-1
4        6-6
        ... 
4545    6-11
4546     7-1
4547     6-1
4548     7-1
4549     6-3

我想将值从英尺转换为厘米。 我做了一个拆分:player_data['height'].str.split('-'),并收到了一系列具有单独的英尺和英寸的数组:

0       [6, 10]
1        [6, 9]
2        [7, 2]
3        [6, 1]
4        [6, 6]
         ...   
4545    [6, 11]
4546     [7, 1]
4547     [6, 1]
4548     [7, 1]
4549     [6, 3]

现在我尝试将值转换为浮点数:

df = player_data['height'].str.split('-').astype(float)

但是我收到一个错误:ValueError: setting an array element with a sequence. 我做错了什么?

【问题讨论】:

  • 最终期望的输出是什么?你想要一个以厘米为单位的字符串吗?
  • 您正在尝试将列表 [6,10] 转换为浮点数,但不清楚应该如何完成,因此您会收到错误消息。你希望结果是6.10吗?

标签: python arrays pandas series


【解决方案1】:

假设您的最终目标是将“英尺-英寸”值转换为厘米,我会这样做:

df['height_cm'] = (df['height'].str.extract('(d*)-(d*)')
                   .apply(pd.to_numeric, errors='coerce') # or .astype(int)
                   .mul([30.48, 2.54]).sum(axis=1)
                  )

输出:

     height  height_cm
0      6-10     208.28
1       6-9     205.74
2       7-2     218.44
3       6-1     185.42
4       6-6     198.12
4545   6-11     210.82
4546    7-1     215.90
4547    6-1     185.42
4548    7-1     215.90
4549    6-3     190.50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多