Итерация по строкам - PullRequest
       2

Итерация по строкам

1 голос
/ 19 сентября 2019

Я пытаюсь вылил Последнее слово первого столбца в фрейме данных. Я хотел, чтобы оно выполнялось только до 18-го индексаи он не работает до 18-го индекса

Извлекает последнее слово первого столбца до N-го индекса, пытаясь удалить 2 из этих слов, и оно не повторяется до 18-й строки

1 Ответ

0 голосов
/ 19 сентября 2019

Вы можете сначала создать маску с помощью DataFrame.isna и использовать DataFrame.loc для замены значений:

df = pd.DataFrame({'Top Holdings':['aaa bb cc d'] * 11,
                   'Unnamed: 1':[np.nan] * 7 + ['s','d','f'] + [np.nan]})         
print (df)
   Top Holdings Unnamed: 1
0   aaa bb cc d        NaN
1   aaa bb cc d        NaN
2   aaa bb cc d        NaN
3   aaa bb cc d        NaN
4   aaa bb cc d        NaN
5   aaa bb cc d        NaN
6   aaa bb cc d        NaN
7   aaa bb cc d          s
8   aaa bb cc d          d
9   aaa bb cc d          f
10  aaa bb cc d        NaN

mask = df['Unnamed: 1'].isna()
df.loc[mask, 'Unnamed: 1']= df.loc[mask, 'Top Holdings'].str.rsplit(n=1).str[0]

Другое решение с Series.fillna:

df['Unnamed: 1'] = df['Unnamed: 1'].fillna(df['Top Holdings'].str.rsplit(n=1).str[0])

print (df)
   Top Holdings Unnamed: 1
0   aaa bb cc d  aaa bb cc
1   aaa bb cc d  aaa bb cc
2   aaa bb cc d  aaa bb cc
3   aaa bb cc d  aaa bb cc
4   aaa bb cc d  aaa bb cc
5   aaa bb cc d  aaa bb cc
6   aaa bb cc d  aaa bb cc
7   aaa bb cc d          s
8   aaa bb cc d          d
9   aaa bb cc d          f
10  aaa bb cc d  aaa bb cc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...