Определение столбца с разными типами во фрейме данных Pandas - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть Data Frame (df) от excel (pd.read_excel()), и мне нужно определить новый столбец с различными типами, такими как:

df['new col'] = df['Date1']
df.loc[condition('Date1'), 'new col'] = 'string'

Где df['Date1'] - это столбецДаты и condition('Date1') проверяет, находится ли «Дата1» в заданном диапазоне значений, а string - фиксированный текст.Мой код дает ошибку.Как я могу определить свой новый столбец?

При условии () функция let:

a = df4['Date2'] - pd.Timedelta(2, unit='d')
b = df4['Date2'] + pd.Timedelta(2, unit='d')

condition('Date1')= df['Date1'].between(a, b, inclusive=False)

1 Ответ

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

Вам нужно только упростить свой код - из df4['Date1'].between(a, b, inclusive=False) возвращается логическая серия, поэтому нужно только перейти на loc:

a = df4['Date2'] - pd.Timedelta(2, unit='d')
b = df4['Date2'] + pd.Timedelta(2, unit='d')

mask = df4['Date1'].between(a, b, inclusive=False)

df4['new col'] = df4['Date1']
df4.loc[mask, 'new col'] = 'string'

Лучшая альтернатива с numpy.where:

df4['new col'] = np.where(mask, 'string', df4['Date1'])

Примечание :

Смешанные значения в одной серии возможны, но тогда производительность должна снизиться, а некоторые функции должны быть нарушены, поэтому будьте осторожны.

...