繁体   English   中英

合并熊猫DataFrame中的两列

[英]Merging two columns in a pandas DataFrame

给定以下DataFrame

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

我要合并列AB ,填充NaN在列单元A与来自列中的值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 Series.fillna使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM