Столбец в панде dataframe имеет списки в качестве значений.Как создать версию этого столбца, но только с первым значением в списке? - PullRequest
0 голосов
/ 03 декабря 2018

enter image description here

Мое текущее решение ниже:

prices_real = []
    for item in sparkline['prices']: 
        prices_real.append(item[0])   
    sparkline['prices_real'] = prices_real

Но мне интересно, есть ли более простой способ или метод, который я не использую?не знаю о чем?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

У вашей проблемы есть 2 аспекта:

  1. Извлечение первого (и единственного) элемента каждого списка в вашей серии.
  2. Преобразование вашей серии в числовой.

Таким образом, вы можете использовать аксессор str, за которым следует pd.to_numeric:

df = pd.DataFrame({'x': [['0.12312'], ['-5.32454'], ['0.563412'], ['-3.918324']]})

df['x'] = pd.to_numeric(df['x'].str[0])

print(df, df.dtypes, sep='\n'*2)

          x
0  0.123120
1 -5.324540
2  0.563412
3 -3.918324

x    float64
dtype: object
0 голосов
/ 03 декабря 2018

Вы можете использовать pandas.Series.apply:

sparkline = pd.DataFrame({"prices": [[1], [4]]})
sparkline
#   prices
# 0    [1]
# 1    [4]

sparkline["prices"] = sparkline["prices"].apply(lambda x: x[0])
sparkline
#    prices
# 0       1
# 1       4
...