【问题标题】:How do I separate these data from each other如何将这些数据彼此分开
【发布时间】:2022-01-12 12:22:07
【问题描述】:

我有一个数据集,其中每个单元格中的数据与每个单元格中的列名混合在一起,如下所示:

Gender
“Gender”:”male”
“Gender”:”female”
“Gender”:”male”
“Gender”:”female”

我正在通过 anaconda 对其进行清洁,我已经尝试了所有但无济于事。我希望它看起来如下图所示:

Gender
Male
Female
Male
Female

【问题讨论】:

  • 您可以将数据集的内容作为字典提供吗?假设数据框名为df,运行df.to_dict()
  • 请告诉我们您已经做出的努力,以便我们帮助您改进它

标签: python pandas anaconda data-science data-cleaning


【解决方案1】:

您可以像这样使用 Pandas Apply 功能:

import pandas as pd

df = pd.DataFrame({"Gender":['“Gender”:”male”','“Gender”:”female”','“Gender”:”male”','“Gender”:”female”'])

def cln(st):
 me = st.split(":")
 return me[1] 

df["Gender"].apply(lambda val: cln(val))

【讨论】:

    【解决方案2】:

    考虑您的问题。我已经像下面这样重新创建了dataframe

    import pandas as pd
    df = pd.DataFrame({"Gender":['“Gender”:”male”',
     '“Gender”:”female”',
     '“Gender”:”male”',
     '“Gender”:”female”']})
    

    所以,DataFrame 如下所示,

                  Gender
    0    “Gender”:”male”
    1  “Gender”:”female”
    2    “Gender”:”male”
    3  “Gender”:”female”
    

    这是可以解决问题的代码

    for i in df.columns:
        df[i] = [j.replace("”",'').split(":")[-1].capitalize() for j in df[i]]
    

    输出df:

       Gender
    0    Male
    1  Female
    2    Male
    3  Female
    

    【讨论】:

      【解决方案3】:

      数据中有一些奇怪的引号字符,因此您需要进行一些按摩以使其干净。您可以简单地使用 Series 对象上的 str 调用来直接处理字符串值。

      df.Gender.str.replace(r'”|“', '', regex=True)\
               .str.split(":", expand=True)[1]\
               .str.capitalize()
      
      0      Male
      1    Female
      2      Male
      3    Female
      

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        • 1970-01-01
        • 2020-10-22
        • 2020-11-09
        • 2020-10-04
        相关资源
        最近更新 更多