我有一个react-dates
数据框,
pandas
现在,我想使用数据框的列索引重命名 Name Not_Included Quantity Not_Included
0 Auto DNS 10 DNS
1 NaN DNS 12 DNS
2 Rtal DNS 18 DNS
3 NaN DNS 14 DNS
4 Indl DNS 16 DNS
5 NaN DNS 18 DNS
。所以,我得到这样的输出,
Not_Included
我尝试了以下方法,
Name Not_Included_1 Quantity Not_Included_3
0 Auto DNS 10 DNS
1 NaN DNS 12 DNS
2 Rtal DNS 18 DNS
3 NaN DNS 14 DNS
4 Indl DNS 16 DNS
5 NaN DNS 18 DNS
我得到以下结果,
for c,v in enumerate(s_df):
if v == 'Not_Included':
vi = 'Not_Included' + str(c)
s_df.rename(columns=lambda n: n.replace(v, vi), inplace=True)
有posts重命名整个数据框的列,但这不是我想要的,因为我正在自动执行一些任务。如何使用列索引获得所需的输出?
还可以在重命名熊猫列时使用列表推导方法吗?
任何想法都很棒。
答案 0 :(得分:2)
可以使用np.where
设置列,检查重复的位置。
import numpy as np
df.columns = np.where(df.columns.duplicated(),
[f'{df.columns[i]}_{i}' for i in range(len(df.columns))],
df.columns)
索引还具有where方法:
df.columns = df.columns.where(~df.columns.duplicated(),
[f'{df.columns[i]}_{i}' for i in range(len(df.columns))])
Name Not_Included Quantity Not_Included_3
0 Auto DNS 10 DNS
1 NaN DNS 12 DNS
2 Rtal DNS 18 DNS
答案 1 :(得分:0)
这也可以工作
df.columns = ['{}_{}'.format(coluna, index) if 'Not_Included' in coluna else coluna for index, coluna in enumerate(df.columns)]