如何添加两个时间序列指标?
How can I add two timeseries-matrices?
我想将两个数据字段(df_A 和 df_B)合并为一个数据字段(df_total),但我只得到 NaN!怎么办?
print(df_A)
DATE OILd GOLD US-RUSS
2000-01-31 0.073370 -0.026818 0.000099
2000-02-29 0.105606 0.038686 0.165135
2000-03-31 -0.121361 -0.061565 -0.065931
2000-04-30 -0.042815 -0.000181 -0.060177
print(df_B)
OILm COMM
DATE
2000-01-31 0.078671 0.037987
2000-02-29 0.020197 0.008202
2000-03-31 -0.133824 -0.059894
2000-04-30 0.108403 0.066403
df_total=df_A+df_B
print(df_total)
COMM GOLD OILd OILm US-RUSS
2000-01-31 NaN NaN NaN NaN NaN
2000-02-29 NaN NaN NaN NaN NaN
2000-03-31 NaN NaN NaN NaN NaN
2000-04-30 NaN NaN NaN NaN NaN
您可以将 pd.concat
与参数 axis=1
一起使用
代码:
import pandas as pd
df1 = pd.DataFrame([['a', 1], ['b', 2]],
columns=['A', 'B'])
df2 = pd.DataFrame([['c', 3], ['d', 4]],
columns=['C', 'D'])
print(pd.concat([df1, df2], axis=1))
df1:
A B
0 a 1
1 b 2
df2:
C D
0 c 3
1 d 4
输出:
A B C D
0 a 1 c 3
1 b 2 d 4
所以在你的情况下你必须这样写
df_total = pd.concat([df_A, df_B], axis=1)
你可以查看 Pandas documentation here for concat method
你也可以使用 merge
print(df_A)
DATE OILd GOLD US-RUSS
2000-01-31 0.073370 -0.026818 0.000099
2000-02-29 0.105606 0.038686 0.165135
2000-03-31 -0.121361 -0.061565 -0.065931
2000-04-30 -0.042815 -0.000181 -0.060177
print(df_B)
OILm COMM
DATE
2000-01-31 0.078671 0.037987
2000-02-29 0.020197 0.008202
2000-03-31 -0.133824 -0.059894
2000-04-30 0.108403 0.066403
你有 DATE
列在两个 df 中都很常见
print(df_A.merge(df_B, on='DATE', how='outer'))
会给你想要的结果
我想将两个数据字段(df_A 和 df_B)合并为一个数据字段(df_total),但我只得到 NaN!怎么办?
print(df_A)
DATE OILd GOLD US-RUSS
2000-01-31 0.073370 -0.026818 0.000099
2000-02-29 0.105606 0.038686 0.165135
2000-03-31 -0.121361 -0.061565 -0.065931
2000-04-30 -0.042815 -0.000181 -0.060177
print(df_B)
OILm COMM
DATE
2000-01-31 0.078671 0.037987
2000-02-29 0.020197 0.008202
2000-03-31 -0.133824 -0.059894
2000-04-30 0.108403 0.066403
df_total=df_A+df_B
print(df_total)
COMM GOLD OILd OILm US-RUSS
2000-01-31 NaN NaN NaN NaN NaN
2000-02-29 NaN NaN NaN NaN NaN
2000-03-31 NaN NaN NaN NaN NaN
2000-04-30 NaN NaN NaN NaN NaN
您可以将 pd.concat
与参数 axis=1
代码:
import pandas as pd
df1 = pd.DataFrame([['a', 1], ['b', 2]],
columns=['A', 'B'])
df2 = pd.DataFrame([['c', 3], ['d', 4]],
columns=['C', 'D'])
print(pd.concat([df1, df2], axis=1))
df1:
A B
0 a 1
1 b 2
df2:
C D
0 c 3
1 d 4
输出:
A B C D
0 a 1 c 3
1 b 2 d 4
所以在你的情况下你必须这样写
df_total = pd.concat([df_A, df_B], axis=1)
你可以查看 Pandas documentation here for concat method
你也可以使用 merge
print(df_A)
DATE OILd GOLD US-RUSS
2000-01-31 0.073370 -0.026818 0.000099
2000-02-29 0.105606 0.038686 0.165135
2000-03-31 -0.121361 -0.061565 -0.065931
2000-04-30 -0.042815 -0.000181 -0.060177
print(df_B)
OILm COMM
DATE
2000-01-31 0.078671 0.037987
2000-02-29 0.020197 0.008202
2000-03-31 -0.133824 -0.059894
2000-04-30 0.108403 0.066403
你有 DATE
列在两个 df 中都很常见
print(df_A.merge(df_B, on='DATE', how='outer'))
会给你想要的结果