将部分数据复制到另一列

时间:2018-05-10 11:09:33

标签: python python-3.x pandas dataframe split

我有一个填充的pandas 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

我想要'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 :(得分:1)

尝试使用str subscript slice method

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

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

另外,根据经验,尽量避免使用apply,因为它与糖蜜一样慢。

答案 1 :(得分:0)

来自pyspark.sql.types导入IntegerType 来自pyspark.sql.functions import udf

def func(a):     如果a和len(str(a))> = 2:         return int(str(a)[:2])     其他:
        返回无

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