首页 > 解决方案 > 将多个字符串值合并到一个 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) 适合您的 excel 爱好者)

所以我试过了。。

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

要考虑的事情:

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

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

标签: pythonpandas

解决方案


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

输出:

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

或使用df.apply

df["C_MEMO"] = df.apply(lambda x: ", ".join([x["ID"], x["role"], x["subject"]]).replace(", ,", ","), axis=1)

推荐阅读