Python: применить код ко всему столбцу данных - PullRequest
0 голосов
/ 03 марта 2019

У меня есть столбец col1 в кадре данных, заполненный значениями.

                                col1                
row1      [0.0, 6.33839991, 3.93961207, 5.27702178, 8.27702178, 6.44343, 5.668574]             
row2      [0.0, 5.93961207, 4.27702178, 4.12702178]
row3      [0.0, 6.44428501, 3.93961207, 8.27702178, 4.27121178]

Каждая строка содержит серию.Мне нужен новый столбец, скажем col2, который возвращает новую серию.Эта серия начинается с 0 и увеличивается на 100 каждый раз, пока эта серия не будет соответствовать длине оригинальной серии.

Ожидаемый результат

                            col1                               col2          
row1      [0.0, 6.3, 3.93, 5.27, 8.2, 6.4, 5.6]             [0,100,200,300,400,500,600]                       
row2      [0.0, 5.9, 4.2, 4.1]                              [0,100,200,300]
row3      [0.0, 6.4, 3.9, 8.2, 4.2]                         [0,100,200,300,400]

Спасибо!

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Попробуйте, если вы хотите, чтобы умножение было основано на каждой уникальной строке (факторизовано), для дублированных элементов списка будут возвращаться дублированные результаты:

df['col2']=df.col1.transform(lambda x: pd.factorize(x)[0]*100)

Или предложение @jezrael:

df.col1.apply(lambda x: np.arange(len(x))*100)


print(df)

                                                   col1  \
row1  [0.0, 6.33839991, 3.93961207, 5.27702178, 8.27...   
row2          [0.0, 5.93961207, 4.27702178, 4.12702178]   
row3  [0.0, 6.44428501, 3.93961207, 8.27702178, 4.27...   

                                   col2  
row1  [0, 100, 200, 300, 400, 500, 600]  
row2                 [0, 100, 200, 300]  
row3            [0, 100, 200, 300, 400] 
0 голосов
/ 03 марта 2019

Моя собственность:

df['col2'] = df.col1.transform(lambda x: [ i * 100 for i in range(len(x))])
0 голосов
/ 03 марта 2019

Попробуйте:

def func(x):
    x['col2'] = np.arange(0, len(x['col1'])*100, 100)
    return x
df.apply(lambda x: func(x) , axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...