【问题标题】:How to use a column in dataframe as dictionary key value?如何将数据框中的列用作字典键值?
【发布时间】:2022-11-28 14:19:57
【问题描述】:

假设有一个数据集。 假设数据集有一个 A 列,其中包含城市名称,例如“纽约”、“加利福尼亚”或“佛罗里达” 现在我们有一本像这样的字典

my_dict = {"New York":1, "California":2, "Florida":3}

所以我需要生成一个 B 列,如果 A 列的行值为“纽约”,则 B 列的值为 1,如字典中所示。

我使用了 lambda 函数并且它有效,但是是否可以不使用 lambda 函数?

【问题讨论】:

    标签: python dataframe dictionary jupyter-notebook


    【解决方案1】:

    这看起来很做作但有效:

    df = pd.DataFrame([my_dict]).stack().reset_index()
    df.drop(df.columns[[0]], axis=1, inplace=True)
    df.columns = ['A', 'B']
    

    并给出

                A  B
    0    New York  1
    1  California  2
    2     Florida  3
    

    【讨论】:

      【解决方案2】:

      方法一

      import pandas as pd
      
      my_dict = {"New York":1, "California":2, "Florida":3}
      
      # creating dataframe from dictionary itself, for reproducing the scenario
      existing_df = pd.DataFrame({"reference_column" : my_dict.keys()})
      
      # duplicate the reference column (city column)
      existing_df["value_column"] = existing_df["reference_column"]
      
      # replace the values in duplicate column with corresponding values from dictionary
      existing_df.replace({"value_column" : my_dict}, inplace = True)
      

      解释 :

      df.replace({'column' : replacement_dictionary}) 是一种 find and replace 技术。 find 将列的值与 replacement_dictionary 的键进行比较。如果键匹配,则其值用于替换列的现有值

      方法二

      import pandas as pd
      
      my_dict = {"New York":1, "California":2, "Florida":3}
      
      # reproducing original dataframe with reference city column
      existing_df = pd.DataFrame({"reference_column" : my_dict.keys()})
      
      # dictionary coverted into dataframe
      replacement_df = pd.DataFrame({"reference_column" : my_dict.keys(), "value_column" : my_dict.values()})
      
      # left join both on city column with original df as left table
      merge_df = existing_df.merge(replacement_df, on = ["reference_column"], how = "left")
      

      解释 :

      字典可以转换为数据框(replacement_df),其中键作为一列,值作为另一列。此转换后的数据框可以与现有数据框合并,条件是现有数据框中的城市名称应与 replacement_df 中的城市名称相匹配

      两种方法的输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-24
        • 2021-10-26
        • 2022-08-21
        • 2018-01-28
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        相关资源
        最近更新 更多