更改列表中列的大小写

时间:2019-05-02 13:41:10

标签: python pandas

如何更改列表中数据框列的大小写?我知道如何使所有列大写,但我不知道如何仅使特定列大写。

d = {'name':['bob','john','sue'],'id':[545,689,143],'fte':[1,.5,.75]}
df = pd.DataFrame(d)
# list of columns I want to make upper case
cols = ['id','fte']

这什么都不做(没有错误,大小写没有改变):

df[cols].rename(str.upper,axis=1,inplace=True)
df


    name    id  fte
0   bob     545     1.00
1   john    689     0.50
2   sue     143     0.75

4 个答案:

答案 0 :(得分:5)

它不能像您尝试的那样工作,原因是索引不支持可变操作。因此,您可以做的一件事是使用列表推导生成一个新的列名列表,然后将其重新分配给df.columns

df.columns = [i.upper() if i in cols else i for i in df.columns]
print(df.columns)
# Index(['name', 'ID', 'FTE'], dtype='object')

答案 1 :(得分:4)

IIUC

df.rename(columns=dict(zip(cols,list(map(str.upper,cols)))))
Out[1135]: 
   name   ID   FTE
0   bob  545  1.00
1  john  689  0.50
2   sue  143  0.75

答案 2 :(得分:2)

您还可以按以下方式使用public static void main(String[] args) { File f = new File("Test.txt"); try { Scanner s = new Scanner(f); StringBuilder l = null; while (s.hasNextLine()) System.out.println(l.append(s.nextLine())); } catch (FileNotFoundException e) { System.out.println("File not found"); } }

rename

答案 3 :(得分:0)

首先,您可以创建地图:

# create map manually
col_map = {"id": "ID", "fte": "FTE"}
# or create map automatically
col_map = {item:item.upper() for item in list(df.columns)[1:]}

然后替换列索引:

df = df.rename(columns=col_map)