【问题标题】:dictionary with df inside as value and changing column names以 df 内部为值并更改列名的字典
【发布时间】:2021-09-14 16:43:01
【问题描述】:

我有下面的字典,里面有 DataFrames 作为值。我只是想转置 DataFrame,重置索引并根据字典中的键重命名列。看起来很简单,但是转置和重置索引不起作用。

代码仅在我为结果分配变量时才有效,例如 value = value.T.reset_index(inplace=True) 但这违背了重点,因为我希望更新 dict 中的原始值(这是一个 DataFrame)。

df_dict = {'volume': vol_df, 'shares': shr_df, 'float': flt_df}

for key, value in df_dict.items():
    value.T.reset_index(inplace=True)
    value.rename(columns={value.columns[0]: 'bbg_ticker', value.columns[1]: key}, inplace=True)

【问题讨论】:

  • 原因是value.T 已经返回了一个副本,所以reset_index(inplace=True) 在那个副本上工作,而不是在原来的value 上工作。

标签: python pandas dataframe dictionary


【解决方案1】:

问题是您正在就地修改 value.T 返回的 DataFrame,而不是 value 本身。

据我所知,转置无法就地完成;这可能是因为他们完全重构了 DataFrame,而不是仅仅更改数据或标签,同时保持结构大致相同。

key 的值设置为新的DataFrame 没有任何问题;我建议这样做:

for key, value in df_dict.items():
    value_T = value.T.reset_index()
    df_dict[key] = value_T.rename(
        columns={value_T.columns[0]: 'bbg_ticker', value_T.columns[1]: key}
    )

【讨论】:

  • 我被你的最后一句话弄糊涂了,你能举个例子吗
  • @Zack 我已经更新了我的答案,希望能更清楚一点。
  • 你先生太棒了! - 非常感谢
猜你喜欢
  • 2012-07-15
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2019-09-05
相关资源
最近更新 更多