I have 2 dataframes:
>>> type(c)
Out[118]: pandas.core.frame.DataFrame
>>> type(N)
Out[119]: pandas.core.frame.DataFrame
>>> c
Out[114]:
t
2017-06-01 01:06:00 1.00
2017-06-01 01:13:00 1.00
2017-06-01 02:09:00 1.00
2017-06-26 22:47:00 1.00
>>> N
Out[115]:
0 1
2017-06-01 01:06:00 1.00 1.00
2017-06-01 01:13:00 1.00 1.00
2017-06-01 02:09:00 1.00 1.00
2017-06-26 22:47:00 1.00 1.00
我需要将这些列相乘,以获得一个 4x2 的数据框,其中每列都是 N 中对应元素与 C 相乘的结果。我尝试了以下 4 种方法,但都没有成功:
>>> N.multiply(c, axis='index')
Out[116]:
0 1 t
2017-06-01 01:06:00 nan nan nan
2017-06-01 01:13:00 nan nan nan
2017-06-01 02:09:00 nan nan nan
2017-06-26 22:47:00 nan nan nan
>>> c[:]*N
Out[98]:
0 1 t
2017-06-01 01:06:00 nan nan nan
2017-06-01 01:13:00 nan nan nan
2017-06-01 02:09:00 nan nan nan
2017-06-26 22:47:00 nan nan nan
>>> c*N
Out[99]:
0 1 t
2017-06-01 01:06:00 nan nan nan
2017-06-01 01:13:00 nan nan nan
2017-06-01 02:09:00 nan nan nan
2017-06-26 22:47:00 nan nan nan
>>> c[:, None]*N
Traceback (most recent call last):
File "C:\...pandas\core\frame.py", line 1797, in __getitem__
return self._getitem_column(key)
File "C:\...core\frame.py", line 1804, in _getitem_column
return self._get_item_cache(key)
File "C:\...core\generic.py", line 1082, in _get_item_cache
res = cache.get(item)
TypeError: unhashable type
有没有一种简单的方式,在广播或不广播的情况下都可以轻松地做到这一点?
c[:, None]
这种添加新轴的表示法是针对numpy数组的 - 它不能用于数据框。如果您想要添加一个新轴,首先需要使用c.values[:, None]
将其转换为numpy数组。 - ayhan