python – 将多个字符串值合并到一个df列中

道歉我多次尝试透过SO一直都是徒劳的.我需要以下方面的帮助:

我的df如下:

import pandas as pd
df = pd.DataFrame({'subject' : ['Eng','Math','Science'],'role' : ['Teacher','','Dr'],'ID' : ['123','444','NaN'] })
 print(df)

    ID  role    subject
0   123 Teacher Eng
1   444         Math
2   NaN Dr      Science

由于这可能是未经验证的数据,我通常会做的(在excel boo中)是创建一个备注字段,该字段聚合数据并且不会在上载时损坏任何好的数据.

所以我一直在玩itterrows试图循环通过df并将字段合并为一个.需要注意的是,我需要使用/ n来分隔同一列中的值(CHAR(10)for excel buffs)

所以我试过..

for index,row in df2.iterrows():
if row['ID'] and row['subject] and row['role'] == "": #search row for any data while leaving out blanks
    row['C_MEMO'] = row[['ID','subject','role']]
else:
    pass

但这不是真的有效,任何建议/帮助将不胜感激.

我想要的输出

ID        role      subject C_MEMO
0   123     Teacher     Eng     123,Teacher
                                Eng

1   444                 Math    444,Math

2   NaN     Dr          Science Dr,Science

要考虑的事项:

我正在使用多种数据类型.

我很高兴将新输出作为字符串.

解决方法

使用:

#first replace values
df = df.replace(['','NaN'],np.nan)
df["C_MEMO"] = df.apply(lambda x: '\n'.join(x.dropna()),axis=1)

或者,如果缺少的值只是字符串:

df["C_MEMO"] = df.apply(lambda x: '\n'.join(x[~x.isin(['','NaN'])]),axis=1)
print(df)
   subject     role   ID             C_MEMO
0      Eng  Teacher  123  Eng\nTeacher\n123
1     Math      NaN  444          Math\n444
2  Science       Dr  NaN        Science\nDr

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...