python - Pandas Dataframe str split max

标签 python pandas split

我有一个数据框,其中有一列包含个人姓名。姓名并不总是采用相同的格式,因此我尝试将名字和姓氏分成单独的列。例如,我可能会看到:

Smith John

Smith, John

Smith, John A

Smith John A

Smith John and Jane

一致的模式是姓氏在前。如何为姓氏创建两个单独的字段,然后为第二列创建除姓氏以外的所有内容。这是我到目前为止所拥有的

owners_df['normal_name'] = owners_df['name'].str.replace(', ', ' ')
owners_df['lastname'] = owners_df["normal_name"].str.split(' ', 1)[0]
owners_df['firstname'] = owners_df["normal_name"].str.split(' ', 1)[1]

问题是我收到错误“ValueError:值的长度与索引的长度不匹配”

最佳答案

正如 @Datanovice 在评论中所说的“当您运行此 owners_df["normal_name"].str.split(' ', 1)[0] 时,您仅抓取第一行”

使用.str访问器获取预期输出

owners_df['lastname'] = owners_df["normal_name"].str.split(' ', n=1).str[0]
owners_df['firstname'] = owners_df["normal_name"].str.split(' ', n=1).str[1]

See docs请注意 n 参数将拆分限制为一次。

关于python - Pandas Dataframe str split max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59775009/

相关文章:

python - 在 pandas 中使用滚动窗口计算非零数的有效方法?

java - 为什么我的带有 split() 的正则表达式在单个标点符号后留下空格?

r - 按句子拆分文本,但不按特殊模式拆分

python - Pandas 根据不同的分隔符分割行

python - Skimage合并过度分割的区域

python - 如何设置动态创建的类的模块名称?

python - mysqldb 查询 : not enough arguments for format string

python - 如何让 Pandas 创建新工作表而不是覆盖?

javascript - 如何从客户端向服务器发送信息(Flask - python)

python - 使用 pandas DataFrames 绘制条形图时如何添加 bin 内容的文本标签?