从其他多个列(大于2个)中填充空白的Pandas列

时间:2019-02-14 16:45:05

标签: python pandas

我有一个这样的数据框:

office       school      hospital            garage  lab  occupation
blah
                         blahblah
             sometext 

基本上,我想通过循环遍历每一行并根据完成的哪一列将自由文本打印到该列中而最终完成占用列。每行仅填充一列(办公室,学校,医院,车库和实验室)。上面的示例最后应该是这样的:

office       school      hospital        garage  lab  occupation
blah                                                    blah
                         blahblah                       blahblah    
             sometext                                   sometext

我知道np.where()方法,但是我认为这不能查看这么多的列(这就是为什么我在标题中放置多于2列的原因)。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果连续只有一个条目:

df[df.columns[:-1]].astype(str).sum(axis=1)

这将获得除最后一个列以外的所有列,然后将其转换为字符串类型,然后将每一列的所有字符串连接在一起。

答案 1 :(得分:1)

您可以根据想要首先确定优先级的列来使用fillna功能,例如:

您可以优先确定要首先填充的列,这里我已经确定优先级-[办公室医院车库实验室]

df['occupation'] = df['office']
df['occupation'].fillna(df['school'], inplace=True)
df['occupation'].fillna(df['hospital'], inplace=True)
df['occupation'].fillna(df['garage'], inplace=True)
df['occupation'].fillna(df['lab'], inplace=True)

假设您使用的是熊猫数据框。