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) 适合您的 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
要考虑的事情:
我正在使用多种数据类型。
我很高兴将新输出作为字符串。
解决方案
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)
推荐阅读
- javascript - P5 绕圈移动物体未能破坏旧物体
- python - 用返回值替换参数值
- python - 获取设备名称python
- r - geosphere/R:计算用 4 个点定义的两个大圆之间的交点
- python - Get row values as list when column value equal something
- r - 打印出巨大的情节,这样我就可以看到结果
- python - 有没有办法将标签和输入框都集中在 tkinter 的特定行上?
- spring - Spring Boot java.lang.IllegalArgumentException:不是托管类型
- pip - pipenv 模拟 pip -f 选项的选项
- rust - 如何在wasm32中获取rust struct关联函数、struct方法或trait方法导出函数