如果有2或3个空格,如何从pandas列中删除它们
我有:
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 个回答
1
- 定义一个函数,根据每个值的长度来处理它,并将这个函数应用到列
name
上。 - 如果这个值有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