簡體   English   中英

通過字典鍵合並數據框重命名列的Python

[英]Python on merging dataframe rename columns by dictionaries keys

最初,我有一個帶日期字段的空數據框,后來我嘗試將其與for循環中的新數據框合並。

com_df = pd.DataFrame(columns=['date'])
    for i in data_dict.values():
        response = requests.get('www.example.com/' + i + '?format=json')
        data = json.loads(response.content.decode('utf-8'))
        df = dataframe_format(data[1]) // convert list of dict to dataframe
        com_df = pd.merge(com_df, df, on='date', how='outer')

所以現在的輸出就像

    date       value_x       value_y  value_x     value_y       value
0   2017  1.722333e+13  8.711267e+12   3485.0  197.713256   46.030025
1   2016  1.829506e+13  7.320738e+12   3052.0  249.907289   -2.024998
2   2015  3.932602e+13  8.188019e+12   2827.0  480.287296   -6.007182

但我希望列名成為以下字典的鍵,

data_dict = {'A': '1','B': '2','C': '3','D': '4','E': '5'}

那是,

    date           A              B        C            D       E 
0   2017  1.722333e+13  8.711267e+12   3485.0  197.713256   46.030025
1   2016  1.829506e+13  7.320738e+12   3052.0  249.907289   -2.024998
2   2015  3.932602e+13  8.188019e+12   2827.0  480.287296   -6.007182

如果您打算應用按其值排序的字典鍵,則可以執行以下操作:

df.columns = [df.columns[0]] \
           + [k for k,_ in sorted(data_dict.items(), key=lambda x:x[1])]

我會將您的輸入字典轉換為一個到列名的映射索引:

data_dict = {'A': '1','B': '2','C': '3','D': '4','E': '5'}
pos_col_dict = {int(v): k for k, v in data_dict.items()}

然后通過NumPy分配給列。 您應該使用副本以避免副作用:

arr = df.columns.values
arr[list(pos_col_dict)] = list(pos_col_dict.values())
df.columns = arr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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