我有3个数组1有国家
['Afghanistan' 'Albania' 'Algeria' 'Andorra' 'Angola' 'Anguilla' .. ]
1有日期
['2020-01-01' '2020-01-02' '2020-01-03' '2020-01-04' '2020-01-05' .. ]
另一个具有类似的数据结构[国家,日期,其他字段]
[['2020-01-01' 'Afghanistan' 'value1']
['2020-01-02' 'Afghanistan' 'value2']
['2020-01-03' 'Afghanistan' 'value3'] ... ]
我需要做一个矩阵以国家/地区为行日期为列和otherField作为每行和每列的对应值,我想知道是否有一种很酷的方法可以使用numpy来实现这一点?
预期输出应该是这样的:
[['' 'Afghanistan' 'Albania' 'Algeria']
['2020-01-01' 'value1' '' '']
['2020-01-02' 'value2' '' '']
['2020-01-03' 'value3' '' '']]
我建议对此任务使用pandas
。这对于pivot
来说非常简单
假设您的输入列表为l
:
import pandas as pd
df = pd.DataFrame(l).pivot(index=0, columns=1, values=2).rename_axis('').reset_index()
out = [list(df.columns)]+df.values.tolist()
输出:
[['', 'Afghanistan', 'Albania'],
['2020-01-01', 'value1', 'value4'],
['2020-01-02', 'value2', 'value5'],
['2020-01-03', 'value3', 'value6']]
使用的输入:
l = [['2020-01-01', 'Afghanistan', 'value1'],
['2020-01-02', 'Afghanistan', 'value2'],
['2020-01-03', 'Afghanistan', 'value3'],
['2020-01-01', 'Albania', 'value4'],
['2020-01-02', 'Albania', 'value5'],
['2020-01-03', 'Albania', 'value6'],]