[英]Renaming columns of dataframe list in Pandas
我有一個包含很多數據框的列表
col = ['open', 'high', 'low', 'close']
index = [1, 2, 3, 4]
df1 = pd.DataFrame(columns=col, index=index)
df2 = pd.DataFrame(columns=col, index=index)
df3 = pd.DataFrame(columns=col, index=index)
dflist = [df1, df2, df3]
我需要重命名列表中所有數據框的所有列。 我需要將每個數據框的名稱添加到每個列的名稱。 我試圖用for循環來做到這一點。
for key in dflist:
key.rename(columns=lambda x: key+x)
顯然,這是行不通的。 所需的輸出將是:
In [1]: df1.columns.tolist()
Out [2]: ['df1open', 'df1high', 'df1low', 'df1close']
In [3]: df2.columns.tolist()
Out [4]: ['df2open', 'df2high', 'df2low', 'df2close']
In [5]: df3.columns.tolist()
Out [6]: ['df3open', 'df3high', 'df3low', 'df3close']
謝謝你的幫助。
如果您需要某種方式訪問它們的“名稱”並以編程方式操作它們(請考慮成千上萬個),則想使用dict而不是列表來存儲DataFrame。 還要注意inplace
參數的使用,這在熊貓中很常見:
import pandas as pd
col = ['open', 'high', 'low', 'close']
index = [1, 2, 3, 4]
df_all = {'df1': pd.DataFrame(columns=col, index=index),
'df2': pd.DataFrame(columns=col, index=index),
'df3': pd.DataFrame(columns=col, index=index)}
for key, df in df_all.iteritems():
df.rename(columns=lambda x: key+x, inplace=True)
print df_all['df1'].columns.tolist()
輸出:
['df1open', 'df1high', 'df1low', 'df1close']
這里有幾個問題。 首先, dflist
是dflist
的列表,而不是這些DataFrame的名稱 。 因此df1
與"df1"
,這意味着key + x
不是字符串連接。
其次, rename()
函數返回一個新的DataFrame。 因此,您必須傳遞inplace=True
參數來覆蓋現有的列名。
嘗試以下方法:
dflist = ['df1', 'df2', 'df3']
for key in dflist:
df = eval(key)
df.rename(columns=lambda x: key+x, inplace=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.