为什么我们不能在apply()中使用split()的参数expand-在Pandas中-

xzv2uavs  于 2023-01-19  发布在  其他
关注(0)|答案(2)|浏览(231)
# Split single column into two columns use apply()
df[['First Name', 'Last Name']] = df["Student_details"].apply(lambda x: pd.Series(str(x).split(",")))
print(df)

1-为什么当我将代码更改为.apply(lambda x: str(x).split("," , expand=True))时,我会得到一个错误,即“扩展是拆分函数的无效参数”
2-为什么我必须使用pd.Series(),而str.split()的默认返回值是Series
3-pd.Series()如何在返回DF的同时返回一个序列-这里-
我试着写扩展和使用它正常,但它没有工作
这是DF

import pandas as pd
import numpy as np
technologies = {
    'Student_details':["Pramodh_Roy", "Leena_Singh", "James_William", "Addem_Smith"],
    'Courses':["Spark", "PySpark", "Pandas",  "Hadoop"],
    'Fee' :[25000, 20000, 22000, 25000]
              }
df = pd.DataFrame(technologies)
print(df)
iszxjhcz

iszxjhcz1#

df[['First Name', 'Last Name']] = df["Student_details"].str.split("_", expand=True)

我不明白你想要什么...是关于上面的解决方案吗?还是你真的想知道为什么#1抛出一个错误?
编辑1:您所引用的str类型的split函数不存在expand参数,因为这是python的str类型。已经为panda中的Series的split函数编写了expand参数。
编辑2:关于第三个问题:正如你在我的建议中所看到的,我甚至没有使用pd.Series函数,但是df[“Student_details”]当然是一个序列。我的答案中的关键是,“expand”参数在这里返回一个DF,其中包含拆分结果所需的列数。因此,如果其中一个名称是“a_B_c_d”,我将得到一个总共包含四列的df。

wpx232ag

wpx232ag2#

仅供参考,这确实有效:

technologies = {
    'Student_details':["Pramodh_Roy", "Leena_Singh", "James_William", "Addem_Smith"],
    'Courses':["Spark", "PySpark", "Pandas",  "Hadoop"],
    'Fee' :[25000, 20000, 22000, 25000]
              }
df = pd.DataFrame(technologies)
df[['First Name', 'Last Name']] = df["Student_details"].apply(lambda x: pd.Series(str(x).split("_")))
print(df)

输出:

Student_details  Courses    Fee First Name Last Name
0     Pramodh_Roy    Spark  25000    Pramodh       Roy
1     Leena_Singh  PySpark  20000      Leena     Singh
2   James_William   Pandas  22000      James   William
3     Addem_Smith   Hadoop  25000      Addem     Smith

相关问题