Pandas从列表中重命名df行

时间:2017-06-01 12:07:47

标签: python pandas dictionary row python-3.5

我已经看了很多类似的问题,但我仍然无法让pandas从另一个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}}

我希望将loads_df行分别重命名为3.7400000000000002,5.5999999999999996和7.0700000000000003。

2 个答案:

答案 0 :(得分:4)

如果你想将debt_df的行名(索引)重命名为stakes_df的值,你需要给dict而不是dict的字典。

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

答案 1 :(得分:0)

您可以使用data.frame重命名行,这里有字典,这就是原因。

如果您向我们提供数据会更好,但在这里您不必从stakes_list制作字典