代码之家  ›  专栏  ›  技术社区  ›  Andrés Acosta Escobar

如何将序列分配给dataframe列的一部分,将另一个序列分配给dataframe列的另一部分?

  •  0
  • Andrés Acosta Escobar  · 技术社区  · 6 年前

    我正在清理日期的dataframe列,我编写了一个函数,它以某种方式清理一些条目,以另一种方式清理所有其他条目。

    我正在清理数据,分成两个独立的系列。我已经记录了原始列中每个条目的索引位置,并且我知道在两个干净的序列中每个条目都有哪些索引。

    函数f接收dates列并返回一个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
    

    如何将两个序列的值赋给日期列?我也不明白格式的改变

    0 回复  |  直到 6 年前