python - 根据日期合并(numpy)数组

标签 python arrays numpy dataframe

我有 N 个数组,每个数组的结构如下

Array 1: [['2014-01-01', '2014-01-03' ...], [1.1, 0.5, ...]]
Array 2: [['2014-01-01', '2014-01-02' ...], [1.4, 0.9, ...]]
Array 3: [['2014-01-02', '2014-01-04' ...], [0.8, 1.5, ...]]

我想得到如下某种类型的数据框

date            1-data    2-data
2014-01-01      1.1       1.4
2014-01-02      0         0.9
2014-01-03      0.5       0
2014-01-04      0         0

正如您从示例中看到的那样,问题在于每个数组中都排除了一些日期(即所有数组中的日期都不相同)。我正在努力寻找一种快速的 pythonic 方式将我所有的数组合并到一个数据框中,并用零填充缺失的数据。

最佳答案

这应该可以解决它,使用merge 函数和outer 方法

>>> import pandas as pd
>>> import numpy as np
>>> d1 = pd.DataFrame(np.array([['2014-01-01', '2014-01-03'], [1.1, 0.5]])).T
>>> d2 = pd.DataFrame(np.array([['2014-01-01', '2014-01-02'], [1.4, 0.9]])).T
>>> d3 = pd.DataFrame(np.array([['2014-01-02', '2014-01-04'], [0.8, 1.5]])).T
>>> d1.columns = d2.columns = d3.columns = ['t','v']
>>> pd.DataFrame(np.array(d1.merge(d2, on='t', how='outer').
...                          merge(d3, on='t', how='outer').
...                          sort('t')),
...                          columns=['date','1-data','2-data','3-data'])
... 
         date 1-data 2-data 3-data
0  2014-01-01    1.1    1.4    NaN
1  2014-01-02    NaN    0.9    0.8
2  2014-01-03    0.5    NaN    NaN
3  2014-01-04    NaN    NaN    1.5

[4 rows x 4 columns]

关于python - 根据日期合并(numpy)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24510806/

相关文章:

python - 无法将非有限值(NA 或 inf)转换为整数

python - 通过python(或其他一些简单的脚本语言)中的键合并json文件

javascript - 计算总时间

Java:从数组切片中查找最大值的索引

arrays - 在 Powershell 中查找对象数组中的匹配项

python - 如何在不同conda环境的两个不同python进程之间交换数据?

python - 在给定条件的情况下在 numpy 数组中填充值

python - 技术分析负面指数

python - 在 Python 中锁定免费只读列表?

python - 将 numpy 数组从值转换为索引