我想知道是否可以創建一個回圈來洗掉資料框列中的字串。我有多個資料框,它們看起來像下面的結構。
df = pd.DataFrame({
'xyz CODE': [1,2,3,3,4, 5,6,7,7,8],
'a': [4, 5, 3, 1, 2, 20, 10, 40, 50, 30],
'b': [20, 10, 40, 50, 30, 4, 5, 3, 1, 2],
'c': [25, 20, 5, 15, 10, 25, 20, 5, 15, 10] })
對于每個資料框,我想洗掉第一列中的字串“CODE”。我寫了以下內容
if __name__ == '__main__':
path = os.getcwd()
csv_files = glob.glob(os.path.join(path, "*.xlsx"))
dataframes_list = []
for file in csv_files:
dataframes_list.append(pd.read_excel(file))
for i in dataframes_list:
i.columns[0] = i.columns[0].replace('CODE', '')
print(i.columns[0])
i = dosomethingtoeachdf(i)
i.to_excel(f'{i.columns[0]}' '.xlsx')
我遇到了一個錯誤TypeError: Index does not support mutable operations。我知道我在這里缺少一些基礎知識,感謝您的幫助!
uj5u.com熱心網友回復:
嘗試使用DataFrame.rename:
df = df.rename(columns={df.columns[0]: df.columns[0].replace(" CODE", "")})
print(df)
印刷:
xyz a b c
0 1 4 20 25
1 2 5 10 20
2 3 3 40 5
3 3 1 50 15
4 4 2 30 10
5 5 20 4 25
6 6 10 5 20
7 7 40 3 5
8 7 50 1 15
9 8 30 2 10
uj5u.com熱心網友回復:
df.columns = [column.replace(' CODE', '') if index == 0 else column for index, column in enumerate(df.columns)]
或者,如果您不關心它會影響第一個列以外的列,則可以將 str replace 方法應用于所有列
df.columns = df.columns.str.replace(' CODE', '')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537558.html
