Python 使用相同大小和索引乘以数据帧
我有一个问题,用相同数量的列和行乘以2个数据帧,如下所示。两者都用float64数据类型填充。它输出一个空的数据帧。任何捐款都可以Python 使用相同大小和索引乘以数据帧,python,pandas,Python,Pandas,我有一个问题,用相同数量的列和行乘以2个数据帧,如下所示。两者都用float64数据类型填充。它输出一个空的数据帧。任何捐款都可以 pos数据帧: 2019-03-01 2019-03-02 2019-03-03 currency
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
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
c_价格
dataframe:
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
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.columns.dtype
两个df的输出:
object
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
df.dtypes
两个df的输出:
object
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
您可以这样做:
jpy_bal = pd.DataFrame(pos.values * c_price.values, columns=pos.columns, index=pos.index)
我认为列中有不同的数据类型:
print (pos.columns.dtype)
print (c_price.columns.dtype)
pos.columns = pd.to_datetime(pos.columns)
c_price.columns = pd.to_datetime(c_price.columns)
jpy_bal = pos * c_price
因此,需要将它们转换为相同的数据类型,以下是列中的DatetimeIndex
:
print (pos.columns.dtype)
print (c_price.columns.dtype)
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
或:
什么是打印(pos.columns.dtype)打印(c_price.columns.dtype)?@jezrael我想你已经发布了一些东西,但它已经不见了。它帮助了我。它应该在这里。嗯,我脑子里想的一切都在回答…@jezrael我想一开始这也可能是dtype。但请查看我的编辑以进行数据类型检查。这两个df都是相同的。这个输出告诉我问题不是dtype,而是您的解决方案工作时的问题。这里的理由是什么?那么如果使用
pos.columns=pd.to\u datetime(pos.columns)c\u price.columns=pd.to\u datetime(c\u price.columns)
会有帮助吗?