我有一个如下所示的df:
col1_test col1_test.1
abc NaN
如何在保留列名中所有其他字符的同时仅删除.1
?
要删除的.1
当前代码:
df.columns = df.columns.str.extract(r'\.?', expand=False)
,但这会删除列名中的其他字符,例如下划线。
新df:
col1_test col1_test
abc NaN
设置完此部分后,我将使用以下内容合并列:
df = df.groupby(level=0, axis=1).first()
答案 0 :(得分:2)
不建议这样做,因为当标题重复时,很难为特定的列建立索引。
但是,由于尝试执行groupby
,因此更好的解决方案是传递可调用对象。
df
col1_test col1_test.1
0 abc NaN
df.groupby(by=lambda x: x.rsplit('.', 1)[0], axis=1).first()
col1_test
0 abc
作为参考,您将使用str.replace
删除列后缀:
df.columns = df.columns.str.replace(r'\.\d+$', '')
您也可以使用str.rsplit
:
df.columns = df.columns.str.rsplit('.', 1).str[0]
df
col1_test col1_test
0 abc NaN