Объедините несколько данных в панд - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть 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

Как видите, для того же идентификатора имя не пишется одинаково.Я хочу проверить для каждой строки, если first_name1 == first_name2 или first_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

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Ваш вопрос мне не очень понятен, но из того, что я получаю, вы пытаетесь сделать что-то вроде этого:

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

Надеюсь, это поможет!

0 голосов
/ 26 февраля 2019

Сначала вы перебираете строки в кадре данных:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...