我有一个有N列的 Dataframe ,其中N可以是0。我有一个标量值列表,长度与 Dataframe 中的列列表相同。我想将 Dataframe 中的列乘以或除以列表中的相应值。
例如:
Dataframe
1 2 3
1 1 2 3
2 4 5 6
3 7 8 9
Multipliers
0 1 2
Expected
1 2 3
1 0 2 6
2 0 5 12
3 0 8 18
让我们创建数据
# Empty
df_1 = pd.DataFrame({}, index=idx)
list_1 = []
series_1 = pd.Series(list_1, dtype=float)
# Not empty (1 element to shorten example)
df_2 = pd.DataFrame({1: [1]}, index=idx)
list_2 = [12]
series_2 = pd.Series(list_2, dtype=float)
当我将乘数作为列表传递时,它可以正常工作
df_2.mul(list_2)
1
1 12
但是,如果列表为空,则会收到警告
df_1.mul(list_1, axis=1)
<stdin>:1: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
Empty DataFrame
Columns: []
Index: [1]
所以我试着把这个列表作为一个序列来传递。当序列为空时,我没有得到任何警告
df_1.mul(series_1, axis=1)
Empty DataFrame
Columns: []
Index: [1]
但这显然不是正确的做法,因为在传递序列时,序列索引与列名匹配。
df_2.mul(series_2)
0 1
1 NaN NaN
我想依靠列的顺序,就像用列表一样。
我该如何做到这一点呢?我对这个清单没意见。我只是想经得起未来考验,所以我想去掉这个警告。
1条答案
按热度按时间qyyhg6bp1#
这里有一个(hacky)的方法来做到这一点:
然后道:
第一次