如何将所有值取到某个定义值以更改 Python Pandas 中数据框中的列名称?

How to take all values till some defined value to change columns names in Data Frame in Python Pandas?

我有如下所示的 DataFrame:

col1()     | abr(ddd = 66, acop = 11)  | cdb()
-----------------------------------------------
111        | 222                       | 3333

我需要更改列的名称。

要更改列名,我想在每个列名中获取 () 之前的所有值,因此我需要像下面这样的数据框:

col1     | abr  | cdb
----------------------
111      | 222  | 3333

我如何在 Python Pandas 中做到这一点?

只是 split 左括号中带有 n=1 的列,即最大值 分割数,只取列表中的第一个值,将其转换为字符串列表,然后将其分配回 df.columns:

>>> df.columns = df.columns.str.split('(', 1).str[0].to_list()

   col1  abr   cdb
0   111  222  3333

然而,你得到了答案,但为了后代,还有另一种方法。

示例数据帧:

print(df)
   col1()  abr(ddd = 66, acop = 11)  cdb()
0     111                       222  33333

列:

print(df.columns)
Index(['col1()', 'abr(ddd = 66, acop = 11)', 'cdb()'], dtype='object')

解决方案:

df = df.rename(columns={"col1()": "col1", "abr(ddd = 66, acop = 11)": "abr",  "cdb()": "cdb"}, inplace=True)

print(df)
   col1  abr    cdb
0   111  222  33333

另一个解决方案:

@与上一个答案中提供的方法相同,但更短一些。

df.columns = df.columns.str.split('[()]').str[0].tolist()
print(df)
   col1  abr    cdb
0   111  222  33333