首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据框添加到特定行和列的现有数据框

将数据框添加到特定行和列的现有数据框
EN

Stack Overflow用户
提问于 2020-08-20 23:15:52
回答 2查看 44关注 0票数 2

我有一个循环,每次创建一个带有表单的dataframe(DF)

DF

代码语言:javascript
复制
  ID        LCAR        RCAR  ...     LPCA1     LPCA2     RPCA2
0 d0129  312.255859  397.216797  ...  1.098888  1.101905  1.152332

然后使用以下形式将该数据帧添加到现有的数据帧(Main_exl_df)中:

main_exl_df

代码语言:javascript
复制
         ID  Date     ... COGOTH3  COGOTH3X COGOTH3F
0     d0129   NaN    ...     NaN       NaN      NaN
1     d0757   NaN    ...     0.0       NaN      NaN
2     d2430   NaN    ...     NaN       NaN      NaN
3     d3132   NaN    ...     0.0       NaN      NaN
4     d0371   NaN    ...     0.0       NaN      NaN
                 ...   ...       ...  ...     ...       ...      ...
2163  d0620   NaN    ...     0.0       NaN      NaN
2164  d2410   NaN    ...     0.0       NaN      NaN
2165  d0752   NaN    ...     NaN       NaN      NaN
2166  d0407   NaN    ...     0.0       NaN      NaN

在每次迭代中,main_exl_df都会被保存,然后为下一次迭代再次加载。

我试过了

代码语言:javascript
复制
main_exl_df = pd.concat([main_exl_df, DF], axis=1)

但是这样每次都会将列添加到main_exl_df的右侧,并且不能识别'ID‘行的索引。

如何指定在具有正确ID和右列的行处添加新的数据帧(DF)?

EN

Stack Overflow用户

发布于 2020-08-25 03:40:39

这就是最终解决问题的方法(在this answer的帮助下):

我使用了merge函数,但是merge创建了带有_x和_y后缀的重复列。为了去掉_x后缀,我使用了这个函数:

代码语言:javascript
复制
    def drop_x(df):
        # list comprehension of the cols that end with '_x'
        to_drop = [x for x in df if x.endswith('_x')]
        df.drop(to_drop, axis=1, inplace=True)

然后合并两个数据帧,同时用空字符串替换_y后缀:

代码语言:javascript
复制
    col_to_use = DF.columns.drop_duplicates(main_exl_df)
    main_exl_df = main_exl_df.merge(DF[col_to_use], on='ID', how='outer', suffixes=('_x', ''))
    drop_x(main_exl_df)
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63508159

复制
相关文章

相似问题

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