合并熊猫DataFrame中的两列

雷夫

给定以下内容DataFrame

      A     B
0 -10.0   NaN
1   NaN  20.0
2 -30.0   NaN

我想合并列AB,用NaNA中的值填充列中单元格B,然后删除列B,结果是DataFrame这样的:

     A
0 -10.0
1  20.0
2 -30.0

我已经设法通过使用iterrows()函数解决了这个问题

完整的代码示例:

import numpy as np
import pandas as pd

example_data = [[-10, np.NaN], [np.NaN, 20], [-30, np.NaN]]

example_df = pd.DataFrame(example_data, columns = ['A', 'B'])

for index, row in example_df.iterrows():
    if pd.isnull(row['A']):
        row['A'] = row['B']

example_df = example_df.drop(columns = ['B'])        

example_df

这似乎工作正常,但我在文档中iterrows()找到以下信息

永远不应修改要迭代的内容。

看来我做错了。

为了达到相同的结果,什么是更好/推荐的方法?

耶斯列尔

使用Series.fillnaSeries.to_frame

df = df['A'].fillna(df['B']).to_frame()
#alternative
#df = df['A'].combine_first(df['B']).to_frame()
print (df)
      A
0 -10.0
1  20.0
2 -30.0

如果更多列且每行需要第一个非缺失值,请使用回填缺失值,并按一个列的一个元素列表选择第一列DataFrame

df = df.bfill(axis=1).iloc[:, [0]]
print (df)
      A
0 -10.0
1  20.0
2 -30.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在熊猫中合并两个数据列?

如何在长度不同的熊猫中合并两列

熊猫DataFrame合并求和列

使用apply()合并熊猫DataFrame以仅在两列的部分匹配时进行合并

熊猫-合并DataFrame中的行

合并两个熊猫DataFrame

如何将两列合并到新的DataFrame中?

在熊猫中将两列与if条件合并

熊猫:合并两列名称不同的列?

合并两个镜像的熊猫列

合并两列熊猫数据框

熊猫-合并和比较两个DataFrame(一个唯一的列)

合并熊猫中两行的内容

熊猫合并以从数据帧中获取两列,并对列进行操作

根据熊猫中的前两个列合并行数不同的列

在熊猫的两列中的任何一列上合并表

如果一列 str.contain 熊猫中的特定字符,则合并两列

按两列聚合并计算熊猫第三列中不同值的出现次数

如何基于比较两列中的值来合并熊猫数据框中的行?

如果两列中的值相同,则合并熊猫中的单元格

将熊猫数据框中的两列合并到一个列表中

如何基于熊猫python中的特定列合并两个数据框?

合并两个熊猫数据帧,并在由管道分隔的列中输入匹配的条目

如何基于熊猫中的列合并两个数据框

熊猫-合并/连接同一列中的两个值

通过获取列之间的平均值合并熊猫中的两个数据框

根据熊猫数据框中的两列合并单元格值

在熊猫中合并具有非唯一行和 NaN 的两列

合并两列同时消除熊猫数据框中的重复字符串