Скопировать часть данных в другой столбец - PullRequest
0 голосов
/ 10 мая 2018

У меня есть заполненный пандой Dataframe, и я пытаюсь создать еще один столбец и заполнить его некоторыми символами из другого столбца.

Пример:

Это мой фрейм данных df1

  a    b    c
 1234 4567 7890
 0987 7654 4321
 0708 7080 9080 

Теперь я хочу создать столбец с именем «d» и заполнить его частью данных из столбца «a». Результат будет:

   a    b    c    d
 1234 4567 7890  12
 0987 7654 4321  09
 0708 7080 9080  07

Я хочу первые 2 символа из 'a'.

Я пробовал это:

df1['d'] = df1.apply(
    lambda row: pd.Series.str.split(pat=df1t['a'], n=2, expand=False),
    axis=1
)

Но я получил эту ошибку:

TypeError: ("split () отсутствует 1 обязательный позиционный аргумент: 'self'", 'произошло с индексом 0')

Как мне это решить?

Ответы [ 2 ]

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

из pyspark.sql.types import IntegerType из pyspark.sql.functions import udf

def func (a): если a и len (str (a))> = 2: вернуть int (str (a) [: 2]) еще:
возврат Нет

func_udf = udf (func, IntegerType ()) df1 = df2.withColumn ('d', func_udf (df1 ['a']))

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

Попробуйте использовать метод среза индекса str :

df1['d'] = df1.a.str[: 2]

>>> df1.d
0    12
1    98
2    07
Name: d, dtype: object

Также, как правило, старайтесь избегать использования apply, так как он медленный, как патока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...