Разделение двух чисел в списке по серии / столбцу Pandas - PullRequest
0 голосов
/ 30 мая 2018
0    [1, 39]
1    [1, 39]
2    [1, 39]
3    [2, 39]
4    [4, 39]

Итак, я начал с дроби в каждой строке, я разбил ее на список с числовыми строками.Я хотел бы просто разделить их и остаться с одним поплавком в каждом ряду.Где я сейчас нахожусь ниже:

t.apply(lambda x: float(t[0][0])/float(t[0][1]))

0    0.025641
1    0.025641
2    0.025641
3    0.025641
4    0.025641

Определенно кажется, что есть лучший способ сделать это, чем использовать этот метод и циклически проходить по всему набору данных, но я тут озадачен!Также следует учитывать, что в этой колонке также присутствуют NaN.Любая помощь с благодарностью!

Спасибо всем, кто откликнулся.Решение, которое в конечном итоге сделало трюк, было:

df ['INTRON'] = df['INTRON'].str.split('/').str[0].astype('float64') / df['INTRON'].str.split('/').str[1].astype('float64')

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

IIUC, вы начинаете со следующего кадра данных в начале:

import pandas as pd
import numpy as np

df = pd.DataFrame({'t':['1/39','1/39','1/39','2/39','4/39', np.NaN, '5/39']})
print(df)

Результат:

      t
0  1/39
1  1/39
2  1/39
3  2/39
4  4/39
5   NaN
6  5/39

Затем вы хотите разделить на /, и есть NaNзначения в столбце.Вы можете попробовать следующее для создания нового столбца:

df['result'] = df.t.str.split('/').dropna().apply(lambda x: float(x[0])/float(x[1]))
print(df)

Результат:

      t    result
0  1/39  0.025641
1  1/39  0.025641
2  1/39  0.025641
3  2/39  0.051282
4  4/39  0.102564
5   NaN       NaN
6  5/39  0.128205
0 голосов
/ 30 мая 2018

Используя str

df.str[0]/df.str[1]
Out[403]: 
0    0.025641
1    0.025641
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...