我有一个问题,将2个数据帧与相同数量的列和行相乘。两者都填充有float64数据类型。它输出一个空的数据框。请提供任何帮助。
pos
数据框:
2019-03-01 2019-03-02 2019-03-03
currency
1WO 2.600000e+02 2.600000e+02 2.600000e+02
ADH 8.219730e+02 8.219730e+02 8.219730e+02
c_price
数据框:
timestamp 2019-03-01 2019-03-02 2019-03-03
currency
1WO 1.8140 1.7230 1.7250
ADH 0.2425 0.2465 0.2387
我的代码:
jpy_bal = pos * c_price
两个df的 df.columns.dtype
输出:
object
两个df的 df.dtypes
输出:
2019-03-01 float64
2019-03-02 float64
2019-03-03 float64
2019-03-04 float64
2019-03-05 float64
...
2019-11-01 float64
2019-11-02 float64
2019-11-03 float64
2019-11-04 float64
2019-11-05 float64
Length: 250, dtype: object
答案 0 :(得分:0)
您可以这样做:
jpy_bal = pd.DataFrame(pos.values * c_price.values, columns=pos.columns, index=pos.index)
答案 1 :(得分:0)
我认为列中有不同的dtype:
print (pos.columns.dtype)
print (c_price.columns.dtype)
因此需要将它们转换为相同的dtype,在此列中DatetimeIndex
:
pos.columns = pd.to_datetime(pos.columns)
c_price.columns = pd.to_datetime(c_price.columns)
jpy_bal = pos * c_price
另一个问题应该是索引值不同-可能是尾随空白:
pos.index = pod.index.str.strip()
c_price.index = c_price.index.str.strip()
另一个想法是通过numpy数组进行多次运算:
jpy_bal = pos * c_price.values
或者:
jpy_bal = pos.values * c_price
print (jpy_bal)
2019-03-01 2019-03-02 2019-03-03
1WO 471.640000 447.980000 448.500000
ADH 199.328452 202.616344 196.204955