Python - для l oop с если - PullRequest
1 голос
/ 26 мая 2020

Не могли бы вы помочь мне понять, что не так в приведенном ниже сценарии и как это исправить? Я просто пытаюсь добавить столбец, повторяющий файл. В новом столбце должно быть написано «F», если процент женщин выше, чем процент мужчин. Спасибо большое!

babies_df = pd.read_csv('datasets/babynames_nysiis.csv', delimiter=';')

gender=[]
for idx in range(len(babies_df)):
    if babies_df['perc_female'>'perc_male']:
        gender.append('F')
    else:
        gender.append('M')

babies_df['gender'] = gender

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Проблема в том, что babies_df['perc_female'>'perc_male'] неправильный синтаксис.

Вы можете попробовать pandas применить для вашего решения.


babies_df = pd.read_csv('datasets/babynames_nysiis.csv', delimiter=';')

babies_df['gender'] = babies_df.apply(
    lambda x: 'F' if x['perc_female'] > x['perc_male'] else 'M', 
    axis=1
)
1 голос
/ 26 мая 2020

Проблема с вашим кодом в том, что вы не повторяете row by row, а также сравниваете столбцы напрямую, что невозможно.

babies_df = pd.read_csv('datasets/babynames_nysiis.csv', delimiter=';')

for index, row in babies_df.iterrows():
    if row["perc_female"] > row["perc_male"]:
        gender.append("F")
    else:
        gender.append("M")

babies_df["gender"] = gender
...