基于sep的Pandas分割=“”不工作

2024-09-27 20:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正在使用的文本文件,它由空格而不是逗号分隔。我做了一些这样的工作,总是创建一个长行,然后在需要的地方拆分为列。数据一直排到现在,我遇到了一个障碍。下面是一些示例文本的数据框架

我想做的是:

  1. 从系列中的(0,测试)开始。冷静下来
  2. 检查(0,测试)处的元件的第一个位置(0)处的数字或字母 一串 如果数字存在,跳过或不执行任何操作。 如果存在字母,则需要在第一次出现空白时拆分代码: df[['First Name', 'Test']] = df['Test'].str.split(" ", 1, expand=True)和 从测试列中删除第一个名称,并将其放置在“第一个名称”列中
  3. 向下移动到下一行并重复,直到完成序列
  4. (额外奖励):名字后面可以加上中间的首字母(第1行)。如果可能的话 这也能被捕获吗

代码

import pandas as pd
from pandas import DataFrame, Series

list = {'Test': ['9/21/2019 1 9/29/2019',
                 'Cynthia T. CC 9/21/2016 1 9/30/2019',
                 '9/12/2019 1 9/12/2012',
                 'Hannah A/R 9/20/2015 1 9/07/2016',
                 'John CC 9/26/2019 3 9/29/2019']}

df = pd.DataFrame(list)

# for n in df.Test:
#     if n[0].isalpha:
#         df[['First Name', 'Test']] = df['Test'].str.split(" ", 1, 
           expand=True)
#     else:
#         continue

print(df)

#----------------------------
# Currently:
#    Test
# 0  9/21/2019 1 9/29/2019
# 1  Cynthia T. CC 9/21/2016 1 9/30/2019
# 2  9/12/2019 1 9/12/2012
# 3  Hannah A/R 9/20/2015 1 9/07/2016
# 4  John CC 9/26/2019 3 9/29/2019

# What I would like:
#    Test                                                 First Name
# 0  9/21/2019 1 9/29/2019                                NaN
# 1  CC 9/21/2016 1 9/30/2019                             Cynthia T.
# 2  9/12/2019 1 9/12/2012                                NaN
# 3  A/R 9/20/2015 1 9/07/2016                            Hannah
# 4  CC 9/26/2019 3 9/29/2019                             John

一如既往,我们感谢您的时间和知识。谢谢你的帮助


Tags: 数据代码nametestdf字母数字john
1条回答
网友
1楼 · 发布于 2024-09-27 20:19:55

您可以使用pandas字符串访问器进行拆分(并检查alpha)

# split and get the first name
df['First Name'] = df['Test'].str.split(n=1).str[0]

# filter out numerics
df['First Name'] = df['First Name'].where(df['First Name'].str.isalpha())

输出

                                  Test First Name
0                9/21/2019 1 9/29/2019        NaN
1  Cynthia T. CC 9/21/2016 1 9/30/2019    Cynthia
2                9/12/2019 1 9/12/2012        NaN
3     Hannah A/R 9/20/2015 1 9/07/2016     Hannah
4        John CC 9/26/2019 3 9/29/2019       John

相关问题 更多 >

    热门问题