我有一个填充的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')
我该如何解决?
答案 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']))