我有一个与此类似的单列数据框:
cat = { 'cat': ['a','b','c-',' -d','e']}
df = pd.DataFrame(cat)
>>> print(df)
cat
0 a
1 b
2 c-
3 -d
4 e
我需要合并第 2 行和第 3 行:
cat
0 a
1 b
2 cd
3 e
我尝试使用正则表达式,因为这些多行数据始终采用“-\n {8}-”格式。但是这不起作用:
df['cat'] = df['cat'].str.replace("-\n {8}-","",flags=re.M)
我无法使用任何分组技术,所以我有点不知所措。感谢您的任何建议。
您可以使用一种方法来识别以 结尾或以 开头的
groupby
字符串:-
{8}-
输出:
中间体:
或者不使用熊猫,
join
所有字符串都使用自定义分隔符(例如\n
,再次替换split
):输出:
我会这样做:
印刷:
另一种可能的解决方案基于以下步骤:
n
它更新行索引和列处的单元格中的值cat
。这个新值的计算方法是将 中的当前值添加cat
到列的下一行 (n+1
)中的值cat
,使用空字符串填充任何缺失值。然后通过删除模式 的任何出现来清理结果'-\n {8}-'
,并将此清理后的系列的行索引中的值n
分配回df.loc[n, 'cat']
。然后,它从数据框中删除索引处的行
n+1
并重置索引以确保其连续,并丢弃旧索引。输出: