【问题标题】:Combine multiple Data in Pandas在 Pandas 中合并多个数据
【发布时间】:2019-02-26 12:32:34
【问题描述】:

我有一个这样的 DataFrame:

Id      First_name1 first_name2.    first_name3   last_name1 last_name2

1.         Michel.     michelle.         Michele.        Jeremi.        Jeremy
2          Jack.        jack.                Jak.               Jean.           Jean
3.         Dave.        Dav.                Dave              Daniel.        Danielle

如你所见,对于同一个id,名字是不一样的。如果first_name1 == first_name2first_name3,我想检查每一行。如果相等,则创建一个名为 first_name 的新列,否则将所有不同的名称设置为 first_name1 等等......就像这样:

Id.        First_name.       First_name1.       First_name2.        Last_name1.         Last_name2

1.         Michel.              Michelle.             Michele.                Jeremy.                Jeremi
2.         Jack.                 Jak.                     nan.                       Jean.                   nan
3.         Dave.                 Dav.                    nan.                       Daniel.                Danielle

【问题讨论】:

    标签: python pandas anaconda


    【解决方案1】:

    你的问题对我来说不是很清楚,但据我所知,你尝试做这样的事情:

    import pandas as pd
    import numpy as np
    
    header = ["First_name1", "First_name2", "First_name3", "Last_name1", "Last_name2"]
    df= pd.DataFrame([["Michel", "Michelle", "Michele", "Jeremi", "Jeremy"],
                             ["Jack", "Jack", "Jak", "Jean", "Jean"],
                             ["Dave", "Dav", "Dave", "Daniel", "Danielle"]], columns=header)
    
    print df
    
    # Create empty df
    finalDataFrame = pd.DataFrame(columns=header)
    
    for index, row in df.iterrows():
        firstName = row[0]
        # convert to row as tuple cannot be modified
        lrow = list(row)
        if (firstName == row[1]):
            lrow[1] = np.NaN
        if (firstName == row[2]):
            lrow[2] = np.NaN
        # Append the row to the final DataFrame
        finalDataFrame.loc[len(finalDataFrame)] = lrow
    
    print finalDataFrame
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      首先,您遍历数据框的行:

      for index, row in yourdf.iterrows():
      

      然后对于数据框中的每一行,您比较要比较的两个值:

      if row['First_name1'] == row['first_name2']:
          # Create the new column and set its value to first_name
          row['new_column'] = first_name
      else:
          # Set each column to the value you want
          row['first_name'] = first_name1
          row['first_name2'] = first_name1
      

      【讨论】:

        猜你喜欢
        • 2019-11-19
        • 1970-01-01
        • 2016-01-19
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        • 2017-10-10
        • 1970-01-01
        相关资源
        最近更新 更多