如何将所有值取到某个定义值以更改 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
我有如下所示的 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