簡體   English   中英

重命名Pandas中數據框列表的列

[英]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']

這里有幾個問題。 首先, dflistdflist的列表,而不是這些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM