【问题标题】:python merging dfs and turning to dictionarypython合并dfs并转向字典
【发布时间】:2021-12-09 20:04:57
【问题描述】:

我遇到了一个塞子。

在下面的代码中,我组合了两个 dfs,然后想将其转换为字典进行一些清理,然后将其转换回 df。

但是当我将它转换回 df 时,它似乎只有两个 df 之一而不是组合版本?

#Concatinating the two df
opel_Concat = pd.concat([df,df2])


#Converting to dictionary
opel_Concat.to_dict()

#COnverting back to pd.df
opel_Df = pd.DataFrame.from_dict(opel_Dict)

[![在此处输入图片描述][1]][1]

DF2 包含4328 rows × 17 columns

[![在此处输入图片描述][2]][2]

所以看来只考虑df1?

【问题讨论】:

    标签: python dataframe concatenation


    【解决方案1】:

    如果您仔细观察我们将连接的 DataFrame 转换为字典时会发生什么,您会发现问题。

    说,df1 是

       a  b
    0  1  3
    1  2  4
    2  3  5
    

    df2 是

       a  b
    0  2  9
    1  4  8
    2  5  7
    3  6  6
    

    我们将它们连接起来得到

       a  b
    0  1  3
    1  2  4
    2  3  5
    0  2  9
    1  4  8
    2  5  7
    3  6  6
    

    注意到索引了吗?是的,它在重复。

    现在,当我将这个连接的 DataFrame 转换为 dict 时会发生什么?

    {'a': {0: 2, 1: 4, 2: 5, 3: 6}, 'b': {0: 9, 1: 8, 2: 7, 3: 6}}
    

    尽管在连接的 DataFrame 中总共有 7 个值,但这里我们只看到 4 个,因为索引被用作字典键,并且它们被覆盖,因为索引中有重复。

    因此,您可以通过以下方式解决此问题: concat_df.reset_index().to_dict()

    【讨论】:

    • 好的,Shubham Dhingra,这是我有过的最好和最清晰的答案之一,而且是一个很好的解释。感谢您花时间向我解释这一点。非常尊重
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2012-07-17
    • 2018-10-16
    • 2011-11-16
    相关资源
    最近更新 更多