2017-06-01 79 views
0

我已经看过很多类似的问题,但我仍然无法让大熊猫从另一个df的值列表中重命名df的行。我究竟做错了什么?熊猫重命名列表中的df行

def calculate_liabilities(stakes_df): 
    if not stakes_df.empty: 
     liabilities_df = pd.DataFrame(decimal_odds_lay.values * stakes_df.values) #makes df with stakes rows, decimal odds columns 
     stakes_list = stakes_df.to_dict() 
     print(stakes_list) 
     liabilities_df = liabilities_df.rename(stakes_list) 
     return liabilities_df 
    else: 
     print ("Failure to calculate liabilities") 

stakes_list = stakes_df.to_dict()给出以下字典:

{'Stakes': {0: 3.7400000000000002, 1: 5.5999999999999996, 2: 7.0700000000000003}} 

我想liabilities_df的行分别更名为3.7400000000000002,5.5999999999999996和7.0700000000000003。

+0

不清楚您的要求,请查看文档了解如何使用重命名https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename.html –

回答

2

一本字典,如果你想liabilities_df的行名称(指数)重命名为stakes_df的价值,你需要给字典不是字典。

liabilities_df = liabilities_df.rename(stakes_list['Stakes']) 

example: 
df= pd.DataFrame([1,2,3]) 
    0 
0 1 
1 2 
2 3 

df.rename({0: 3.7400000000000002, 1: 5.5999999999999996, 2: 7.0700000000000003}) 

     0 
3.74 1 
5.60 2 
7.07 3 
0

你可以用data.frame重命名行,这里有一个字典,这就是为什么。

会更好,如果你给我们的数据,但在这里,你不必做从stakes_list