Pandas数据帧更新列

时间:2017-03-09 01:03:52

标签: python pandas dataframe

我有以下pandas数据帧:

>>> df1
  Col1 Col2       Col3
0    A    a 2017-02-28
1    B    b 2017-02-28
2    C    c 2017-03-08
3    D    d 2017-02-28

>>> df2
  Col1 Col2       Col3
0    B    b 2017-03-05
1    C    c 2017-03-05
2    D    d 2017-03-05

我希望df1.Col3的数据更新df2.Col3df2.Col3的日期是最近的答案:

>>> df1
  Col1 Col2       Col3
0    A    a 2017-02-28
1    B    b 2017-03-05
2    C    c 2017-03-08
3    D    d 2017-03-05

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

看起来您习惯使用R.在Pandas中选择列的语法是df.Col1df['Col1']

您可以连接两个数据框,按Col3排序,然后删除['Col1','Col2']组合的副本。如果还没有,则需要将Col3转换为datetime对象。

> df1.Col3 = pd.to_datetime(df1.Col3)
> df2.Col3 = pd.to_datetime(df2.Col3)
> (pd.concat((df1, df2))
      .reset_index(drop=True)
      .sort_values('Col3')
      .drop_duplicates(['Col1','Col2'], keep='last'))

#returns:
  Col1 Col2       Col3
0    A    a 2017-02-28
4    B    b 2017-03-05
6    D    d 2017-03-05
2    C    c 2017-03-08