Python 在2个数据帧之间相乘
我有以下2个数据帧,我想乘,但我没有设法做到这一点。任何帮助都将不胜感激 第一数据帧:Python 在2个数据帧之间相乘,python,pandas,Python,Pandas,我有以下2个数据帧,我想乘,但我没有设法做到这一点。任何帮助都将不胜感激 第一数据帧: created_at 2019-06-28 2019-06-29 2019-06-30 2019-07-01 currency 1WO 2.600000e+05 2.600000e+05 2.604320e+05 2.604320e+05 ABX
created_at 2019-06-28 2019-06-29 2019-06-30 2019-07-01
currency
1WO 2.600000e+05 2.600000e+05 2.604320e+05 2.604320e+05
ABX 1.033400e+04 1.033400e+04 1.033400e+04 1.033400e+04
ADH 8.219730e+05 8.219730e+05 8.219730e+05 8.219730e+05
ALX 2.500000e+04 2.500000e+04 2.500000e+04 2.500000e+04
AMLT 4.874240e+05 7.510590e+05 7.510600e+05 7.510600e+05
BCH 2.690000e+02 2.360000e+02 2.390000e+02 -3.982000e+03
2019-06-28 2019-06-29 2019-06-30 2019-07-01
currency
1WO 5.108000e+00 5.533000e+00 5.305000e+00 4.745000e+00
ADH 1.600000e-01 1.807000e-01 1.587000e-01 1.470000e-01
ALX 3.877000e-01 4.564000e-01 4.751000e-01 3.773000e-01
AMLT 6.078000e-01 1.051000e+00 6.900000e-01 4.087000e-01
BCH 4.537659e+04 4.728048e+04 4.786292e+04 4.355922e+04
第二数据帧:
created_at 2019-06-28 2019-06-29 2019-06-30 2019-07-01
currency
1WO 2.600000e+05 2.600000e+05 2.604320e+05 2.604320e+05
ABX 1.033400e+04 1.033400e+04 1.033400e+04 1.033400e+04
ADH 8.219730e+05 8.219730e+05 8.219730e+05 8.219730e+05
ALX 2.500000e+04 2.500000e+04 2.500000e+04 2.500000e+04
AMLT 4.874240e+05 7.510590e+05 7.510600e+05 7.510600e+05
BCH 2.690000e+02 2.360000e+02 2.390000e+02 -3.982000e+03
2019-06-28 2019-06-29 2019-06-30 2019-07-01
currency
1WO 5.108000e+00 5.533000e+00 5.305000e+00 4.745000e+00
ADH 1.600000e-01 1.807000e-01 1.587000e-01 1.470000e-01
ALX 3.877000e-01 4.564000e-01 4.751000e-01 3.773000e-01
AMLT 6.078000e-01 1.051000e+00 6.900000e-01 4.087000e-01
BCH 4.537659e+04 4.728048e+04 4.786292e+04 4.355922e+04
第一数据帧信息:
<class 'pandas.core.frame.DataFrame'>
Index: 123 entries, 1WO to ZPR
Data columns (total 4 columns):
2019-06-28 123 non-null float64
2019-06-29 123 non-null float64
2019-06-30 123 non-null float64
2019-07-01 123 non-null float64
dtypes: float64(4)
memory usage: 4.8+ KB
None
错误:
File "inv_pos.py", line 321, in <module>
jpy_bal = pos_bal.mul(d_price, axis= 0)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/ops.py", line 1550, in f
return self._combine_frame(other, na_op, fill_value, level)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/frame.py", line 4727, in _combine_frame
this, other = self.align(other, join='outer', level=level, copy=False)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/frame.py", line 3550, in align
broadcast_axis=broadcast_axis)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/generic.py", line 7367, in align
fill_axis=fill_axis)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/generic.py", line 7394, in _align_frame
other.columns, how=join, level=level, return_indexers=True)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 3735, in join
return_indexers=return_indexers)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 3830, in _join_multi
raise ValueError("cannot join with no level specified and no "
ValueError: cannot join with no level specified and no overlapping names
文件“inv_pos.py”,第321行,在
日元余额=头寸余额(d_价格,轴=0)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/ops.py”,第1550行,f
返回自身。组合框架(其他、不适用、填充值、级别)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/frame.py”,第4727行,框架中
this,other=self.align(other,join='outer',level=level,copy=False)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/frame.py”,第3550行,对齐
广播轴=广播轴)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/generic.py”,第7367行,对齐
填充轴=填充轴)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/generic.py”,第7394行,在对齐框架中
other.columns,how=join,level=level,return\u indexers=True)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/index/base.py”,第3735行,在join中
返回索引器=返回索引器)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/pandas/core/index/base.py”,第3830行,在“join\u multi”中
raise VALUETERROR(“无法在未指定级别且未指定的情况下加入”
ValueError:无法在未指定级别且没有重叠名称的情况下加入
好的,根据您的信息,您的第二个df2列类型是datetime和多索引,这是有线的,单列但有多个索引类型,因此我们转换mul将起作用
df2.columns=df.columns.get_level_values(0)
df1.columns=pd.to_datetime(df1.columns)
df2.columns=pd.to_datetime(df2.columns)
df1.mul(df2)
2019-06-28 2019-06-29 2019-06-30 2019-07-01
currency
1WO 1.328080e+06 1.438580e+06 1.381592e+06 1.235750e+06
ABX NaN NaN NaN NaN
ADH 1.315157e+05 1.485305e+05 1.304471e+05 1.208300e+05
ALX 9.692500e+03 1.141000e+04 1.187750e+04 9.432500e+03
AMLT 2.962563e+05 7.893630e+05 5.182314e+05 3.069582e+05
BCH 1.220630e+07 1.115819e+07 1.143924e+07 -1.734528e+08
在我这边运行良好真的吗?!我很困惑检查答案,让我知道是否有效:-)谢谢,似乎第二个df列是元组。它向我发送了一个类型错误TypeError:无法转换为datetime
@mamadede您可以尝试一下df2.columns=df2.columns.str[0]
@mamadede如果您觉得这个答案有用,除了接受它之外,您还可以对它进行投票。