Как назначить ряд для одной части столбца данных, а другой ряд - для другой части столбца данных? - PullRequest
0 голосов
/ 07 января 2019

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

Я очищаю данные двумя отдельными сериями. Я записал индексную позицию каждой записи в исходном столбце и знаю, какие индексы есть в каждой из двух чистых серий.

Моя проблема состоит в том, чтобы назначить обе серии вместе столбцу данных. Я просто не могу этого сделать.

Моя функция f получает столбец дат и возвращает список из 4: индексы столбца в первой серии [0], чистые записи в первой серии [1], индексы столбца во второй серии [2], чистые записи во второй серии [3].

Так что, когда я делаю f (столбец) [3] и f (столбец) [1], я получаю очищенные серии панд.

#Function works:

>>> f(df['dates_column'])[0]
, 18812, 18813, 18814, 18815, 18816, 18817, 18818, 18819, 18820, 18821, 
18822, 18823, 18824, 18825, 18826,

>>> f(df['dates_column'])[1].tail()
331849   2009-10-03
331850   2006-10-03
331851   2015-09-27
331852   1911-08-09
331853   2013-09-03
Name: dates_column, dtype: datetime64[ns]

>>> f(df['dates_column'])[3].tail()
331898   1996-12-11
331899   2004-06-01
331900   2010-03-12
331901   2016-01-06
331902   2010-03-12
Name: dates_column, dtype: datetime64[ns]

>>> f(df['dates_column'])[1].head()    
0   1900-01-01
1   1900-01-01
2   1900-01-01
3   1900-01-01
4   1900-01-01
Name: dates_column, dtype: datetime64[ns]

>>> f(df['dates_column'])[3].head()
40036   2002-06-18
40037   2005-04-01
40038   2002-04-01
40039   2003-05-02
40040   2006-10-01
Name: dates_column, dtype: datetime64[ns]

#But cannot assign properly..

>>> df['dates_column'][function(df['dates_column'])[0]] = 
f(df['dates_column'])[1]

<input>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

>>> df['dates_column'][f(df['dates_column'])[2]] = 
f(df['dates_column'])[3]

<input>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

#And it gets all crazy in the head..
>>> df['dates_column'].head()
0    -2208988800000000000
1    -2208988800000000000
2    -2208988800000000000
3    -2208988800000000000
4    -2208988800000000000
Name: dates_column, dtype: object

#And in the tail 
>>> df['dates_column'].tail()
31898     1996-12-11 00:00:00
331899    2004-06-01 00:00:00
331900    2010-03-12 00:00:00
331901    2016-01-06 00:00:00
331902    2010-03-12 00:00:00
Name: dates_column, dtype: object

Как назначить значения в обеих сериях для date_column? Я не могу понять изменение формата

...