【问题标题】:Merge columns into one while dropping nan values and duplicates将列合并为一个,同时删除 nan 值和重复项
【发布时间】:2021-06-23 20:12:51
【问题描述】:

我正在尝试将多列合并为一列,同时删除重复项并删除空值但保留行。 我有什么:

df= pd.DataFrame(np.array([['nan', 'nan', 'nan'], ['nan', 2, 2], ['nan', 'x', 'nan']]), columns=['a', 'b', 'c'])

我需要什么:

df= pd.DataFrame(np.array([[''], [ 2], [ 1]]), columns=['a'])

我试过了,但最后一行得到 1,nan:

df['a]=df[['a','b','c]].agg(', '.join, axis=1) 

我也尝试了以下方法,但无法正常工作:

.stack().unstack() 

.join 

但我无法让这些删除每一行的重复项

【问题讨论】:

  • df.fillna('').stack().drop_duplicates().reset_index(drop=True)?还是您希望逐行删除重复项?
  • 好问题克里斯,我想删除重复的行

标签: python merge multiple-columns


【解决方案1】:

这将找到一行的最大值并将'nan'替换为''

new_df = pd.DataFrame(df.astype(float).max(axis=1).replace(np.nan, ''), columns=[df.columns[0]])

输出:

     a
0  
1  2.0
2  1.0

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 2021-11-04
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2018-03-11
    • 2016-10-24
    相关资源
    最近更新 更多