首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用单行数据帧广播熊猫数据帧?

如何用单行数据帧广播熊猫数据帧?
EN

Stack Overflow用户
提问于 2019-10-21 07:57:52
回答 2查看 178关注 0票数 0

我有一个dataframe(dall),我有一个单行dataframe,它具有相同的列( row )。如何在不编写循环的情况下获得d_result?我知道我可以将dataframe转换成numpy数组并广播,但我想Pandas有一种直接做到这一点的方法。我已经试过pd.mul了,给我nan结果。

代码语言:javascript
复制
dall = pd.DataFrame([[5,4,3], [3,5,5], [6,6,6]], columns=['a','b','c'])
row = pd.DataFrame([[-1, 100, 0]], columns=['a','b','c'])
d_result = pd.DataFrame([[-5,400,0], [-3,500,0], [-6,600,0]], columns=['a','b','c'])

dall

代码语言:javascript
复制
    a   b   c
0   5   4   3
1   3   5   5
2   6   6   6

代码语言:javascript
复制
    a   b   c
0   -1  100 0

d_result

代码语言:javascript
复制
     a  b   c
0   -5  400 0
1   -3  500 0
2   -6  600 0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-21 08:00:15

我们可以使用mul

代码语言:javascript
复制
dall=dall.mul(row.loc[0],axis=1)
dall
Out[5]: 
   a    b  c
0 -5  400  0
1 -3  500  0
2 -6  600  0
票数 0
EN

Stack Overflow用户

发布于 2019-10-21 09:39:31

您可以通过将DataFrame obj与系列obj相乘来实现此目的。如下所示:

代码语言:javascript
复制
dall * row.iloc[0]

我认为这与@WeNYoBen的回答本质上是一样的。

您还可以将DataFrame obj乘以DataFrame obj,如下所示。但要注意,NaN值不会传播,因为在乘法之前,NaN值将被替换为1.0。

代码语言:javascript
复制
dall.mul(row, axis='columns', fill_value=1.0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58478279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档