更新Pandas DataFrame中B列的值为C的A列

时间:2018-11-21 18:07:56

标签: python pandas dataframe

早上好

我正在尝试基于两列的内容更新DataFrame,并且遇到了问题。

具体地说,我有一列称为IP,另一列称为VISITTIME。我添加了两列,分别为OLDESTNEWEST,其中必须包含该行VISITTIME的最小和最大IP

使用:

df2 = pd.merge(df.groupby('IP')['VISITTIME'].min().to_frame(), 
               df.groupby('IP')['VISITTIME'].max().to_frame(), on="IP") 

我可以获取表中每个IP的最小和最大时间。然后,我可以对其进行迭代,但是我不知道如何更新原始的DataFrame

基本上,我要问的是如何在pandas中执行以下操作:

UPDATE df SET df.OLDEST = df2.OLDEST, df.NEWEST = df2.NEWEST WHERE df.IP=df2.IP; 

我觉得这应该很容易,但我感到遗憾的是,事实并非如此。

谢谢

1 个答案:

答案 0 :(得分:0)

取决于您的熊猫版本(我在版本> 0.22.0中知道), 有一种叫做Dataframe.update的方法。

这应该提供一些示例,但要提供一些警告:

  • 您需要确保两个数据帧都使用IP作为索引, 否则此方法将无效。
  • 列(系列)名称应该相同,因此不需要任何位置或列引用。
  • 您可以选择仅覆盖NA值,但不适用于此处描述的内容。

DataFrame.update(other, join='left', overwrite=True, filter_func=None, raise_conflict=False)

使用来自另一个DataFrame的非NA值进行修改。

按索引对齐。没有返回值。