需要:从列 headers 中删除空格的函数,该函数对列 headers 不是字符串很稳健
Wanted: function to remove whitespace from column headers that is robust to column headers not being strings
我将我的数据放入 pandas 数据帧,并且通常用
清理我的列 headers
df.columns = df.columns.str.strip()
但是我最近遇到了一个数据框,它有 integer 类型的列名,而不是字符串。当我尝试执行 .str.strip() 时,它会抛出错误。
如果它们是字符串。
,我将如何编写一些 python 代码从列名称中去除空格
我是新手python,手握得越多越好
谢谢
您可以使用列表理解,这在使用 Pandas 时非常不常见,因为应用内置 Pandas 函数通常更有效(正如您所做的那样)。但是对于像固定列名这样简单的事情,这应该没问题:
df = pd.DataFrame(columns=[1, 2, 'A '])
df.columns = [col.strip() if isinstance(col, str) else col for col in df.columns]
结果:
In [75]: df.columns
Out[75]: Index([1, 2, 'A'], dtype='object')
最安全的选择是在执行此操作之前将所有列名转换为字符串(因此 df[0]
-> df['0']
):
df.rename(columns={c: str(c).strip() for c in df.columns}, inplace=True)
这使用字典理解来迭代列名 df.columns
,然后创建从原始列名 c
到字符串版本 str(c)
的映射。然后它使用本机 .strip()
字符串方法。您可以使用 inplace=True
.
作为单行代码执行它
更接近原问题的意图是:
df.columns = [col.strip() if isinstance(col, str) else col for col in df.columns]
...但我建议不要使用它,因为数字列名称可能会造成混淆(例如,如果第 5 列位于位置 3)。加上字符串名称,很明显这不是一个位置值。
我将我的数据放入 pandas 数据帧,并且通常用
清理我的列 headersdf.columns = df.columns.str.strip()
但是我最近遇到了一个数据框,它有 integer 类型的列名,而不是字符串。当我尝试执行 .str.strip() 时,它会抛出错误。
如果它们是字符串。
,我将如何编写一些 python 代码从列名称中去除空格我是新手python,手握得越多越好
谢谢
您可以使用列表理解,这在使用 Pandas 时非常不常见,因为应用内置 Pandas 函数通常更有效(正如您所做的那样)。但是对于像固定列名这样简单的事情,这应该没问题:
df = pd.DataFrame(columns=[1, 2, 'A '])
df.columns = [col.strip() if isinstance(col, str) else col for col in df.columns]
结果:
In [75]: df.columns
Out[75]: Index([1, 2, 'A'], dtype='object')
最安全的选择是在执行此操作之前将所有列名转换为字符串(因此 df[0]
-> df['0']
):
df.rename(columns={c: str(c).strip() for c in df.columns}, inplace=True)
这使用字典理解来迭代列名 df.columns
,然后创建从原始列名 c
到字符串版本 str(c)
的映射。然后它使用本机 .strip()
字符串方法。您可以使用 inplace=True
.
更接近原问题的意图是:
df.columns = [col.strip() if isinstance(col, str) else col for col in df.columns]
...但我建议不要使用它,因为数字列名称可能会造成混淆(例如,如果第 5 列位于位置 3)。加上字符串名称,很明显这不是一个位置值。