我有:

pd.DataFrame({'id':[1,2],'col1':['a b c','a b c d']})

我想要:

pd.DataFrame({'id':[1,1,2],'col1':['ab c', 'a bc','ab cd']})
  • 一列中始终有1、2或3个空格
  • 如果有2个空格(3个字),我想复制行,并改变值,在一行显示word1word2 word3,在第二行显示word1 word2word3
  • 如果有3个单词(4个空格),我想将值更改为word1word2 word3word4

我有约30列,并测试空间的数量,

df['name_cnt'] = df['name'].str.count('\s+')

推荐答案

  1. 定义一个函数,根据每个值的长度来处理每个值,并将其应用于列name.
  2. 如果该值有3个单词,函数将返回一个列表,该列表稍后需要分解成更多的行.
def process_col(col):
    w = col.split()
    if len(w) == 3:
        return [f"{w[0]}{w[1]} {w[2]}", f"{w[0]} {w[1]}{w[2]}"]
    elif len(w) == 4:
        return f"{w[0]}{w[1]} {w[2]}{w[3]}"
    else:
        return col


df["name"] = df["name"].apply(process_col)
df = df.explode("name").reset_index(drop=True)

假设这个数据库作为输入:

   id     name
0   1    a b c
1   2  a b c d

结果将是:

   id   name
0   1   ab c
1   1   a bc
2   2  ab cd

Python相关问答推荐

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

使用索引列表列表对列进行切片并获取行方向的向量长度

Mistral模型为不同的输入文本生成相同的嵌入

如何将多进程池声明为变量并将其导入到另一个Python文件

为什么抓取的HTML与浏览器判断的元素不同?

递归访问嵌套字典中的元素值

如何根据一列的值有条件地 Select 前N组?

调用decorator返回原始函数的输出

如何在Python中获取`Genericums`超级类型?

在matplotlib中删除子图之间的间隙_mosaic

如何杀死一个进程,我的Python可执行文件以sudo启动?

在Python中使用yaml渲染(多行字符串)

关于两个表达式的区别

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

GPT python SDK引入了大量开销/错误超时

极点替换值大于组内另一个极点数据帧的最大值

TypeError:';Locator';对象无法在PlayWriter中使用.first()调用

如何将一个文件的多列导入到Python中的同一数组中?

我如何处理超类和子类的情况

IpyWidget Select 框未打开