首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据筛选器从另一个DataFrame添加新列和值

根据筛选器从另一个DataFrame添加新列和值
EN

Stack Overflow用户
提问于 2021-12-06 08:41:47
回答 2查看 37关注 0票数 1

根据筛选器添加新列并从另一个DataFrame中添加值:

我有两个DataFrames,如下所示:

代码语言:javascript
复制
    Name   time  
    net    8am
    stat   8am
    net    8am
    net    8am
    sig    8am
    net    8am

措施_df:-

代码语言:javascript
复制
    tcp_time.  tcp_wait   
    12         33
    22         11
    23         32
    34         11

现在,我想将measures_df中的列添加到infra_df中,用于任何名称都是net的行和其他任何地方的NAN:-

结果_df:-

代码语言:javascript
复制
    Name   time   tcp_time   tcp_wait
    net    8am    12         33
    stat   8am    NAN        NAN
    net    8am    22         11
    net    8am    23         32
    sig    8am    NAN        NAN
    net    8am    34         11
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-06 08:57:28

如果measures_df的长度与infra_df中的net值数目相同,则使用:

代码语言:javascript
复制
m = infra_df['Name'].eq('net')
df = pd.concat([infra_df, measures_df.set_index(m.index[m])], axis=1)
print (df)
   Name time  tcp_time.  tcp_wait
0   net  8am       12.0      33.0
1  stat  8am        NaN       NaN
2   net  8am       22.0      11.0
3   net  8am       23.0      32.0
4   sig  8am        NaN       NaN
5   net  8am       34.0      11.0
票数 1
EN

Stack Overflow用户

发布于 2021-12-06 08:59:35

以net为名称的示例索引:

代码语言:javascript
复制
idx = intra_df.loc[intra_df["Name"].eq("net")].index

我们使用修改后的索引与measures_df连接:

代码语言:javascript
复制
intra_df = pd.concat([intra_df, measures_df.iloc[:len(idx),:].set_index(idx)], axis=1)

我还添加了iloc,以防measures_df中的行比intra_df中的net多。

如果需要的话,.dropna()将删除所有nan行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70242786

复制
相关文章

相似问题

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