我有一个包含约 12,000 列和几百行的数据框,如下所示:
Date id1 id2 id3 id4 ... id12000
1/4/16 100 78 103.5 15 35
1/5/16 100.5 78 104 16 37
1/6/16 99.5 78.5 104.5 16.5 37
1/7/16 100.1 77 104.2 13 37
1/8/16 100.3 76.5 104.2 13.5 33
1/11/16 99.8 77 103.7 13.5 34
...
5/1/17 101.1 82 103.6 12 33
每天,我都会收到一个新的数据框,我需要将其添加到此数据框中。例如,我可能会得到 5 月 2 日的数据框,如下所示:
Date id1 id3 id4 id6 ... id12100
5/2/17 100 103 12.5 15 100
但是该数据框每天可能会包含一些新的 ID(列),并且还可能会省略一些以前存在的 ID。
我希望我的新数据框在每次有新 ID 时添加列,并用 NaN
填充该列的所有先前值。我还希望以前在数据框中的任何 ID 单元格都用 NaN 填充。因此,例如,上面两个示例数据帧的连接将如下所示:
Date id1 id2 id3 id4 ... id12000 id12100
1/4/16 100 78 103.5 15 35 NaN
1/5/16 100.5 78 104 16 37 NaN
1/6/16 99.5 78.5 104.5 16.5 37 NaN
1/7/16 100.1 77 104.2 13 37 NaN
1/8/16 100.3 76.5 104.2 13.5 33 NaN
1/11/16 99.8 77 103.7 13.5 34 NaN
...
5/1/17 101.1 82 103.6 12 33 NaN
5/2/17 100 NaN 103 12.5 NaN 100
但是,如果我在数据框中已有的日期运行此命令,我只想用新值替换旧值。
我已经和这个问题争论了一段时间了,不太清楚我需要如何做到这一点,在正确格式化日期之间,以便我可以检查数据框中是否有重复项,以正确地附加/加入/合并/等等。旧值(value)观与新值(value)观。我有几个不同的地方,通用函数对我来说非常有用,所以我希望有人遇到同样的问题,并且有一个我可以使用的优雅的解决方案。
提前致谢!
最佳答案
In [43]: df
Out[43]:
Date id1 id2 id3 id4
0 1/4/16 100.0 78.0 103.5 15.0
1 1/5/16 100.5 78.0 104.0 16.0
2 1/6/16 99.5 78.5 104.5 16.5
In [44]: new
Out[44]:
Date id1 id3 id4 id6 id12100
0 1/6/16 11 11 11.0 11 111
1 5/2/17 100 103 12.5 15 100
In [45]: df.set_index('Date').append(new.set_index('Date'))
Out[45]:
id1 id12100 id2 id3 id4 id6
Date
1/4/16 100.0 NaN 78.0 103.5 15.0 NaN
1/5/16 100.5 NaN 78.0 104.0 16.0 NaN
1/6/16 99.5 NaN 78.5 104.5 16.5 NaN
1/6/16 11.0 111.0 NaN 11.0 11.0 11.0
5/2/17 100.0 100.0 NaN 103.0 12.5 15.0
关于python - 在追加到 pandas 数据框时创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745039/