我想将两列或更多列合并为新列,根据行条件(即1,一个整数),新列应为包含连接字符串的列。
我尝试使用非零值将我们的行过滤为零,但失败。
index LAWSUIT BOARD-MEETING
A 1 0
B 0 0
C 1 1
D 0 1
对此进行了尝试,但它只是结合了所有索引:
rdf['NEW'] = rdf.apply(lambda x: ','.join(x.index) if x.nonzero() else 0, axis=1)
预期“ NEW”列应如下所示:
index LAWSUIT BOARD-MEETING NEW
A 1 0 LAWSUIT
B 0 0
C 1 1 LAWSUIT,BOARD-MEETING
D 0 1 BOARD-MEETING
任何帮助将不胜感激!
答案 0 :(得分:1)
使用:
final=df.assign(NEW=(df.dot(df.columns+',').str[:-1]))
LAWSUIT BOARD-MEETING NEW
index
A 1 0 LAWSUIT
B 0 0
C 1 1 LAWSUIT,BOARD-MEETING
D 0 1 BOARD-MEETING
答案 1 :(得分:0)
这是for
循环适用于大熊猫的少数事物之一
col_names = rdf.columns.tolist()
rdf["NEW"] = ""
for col in col_names:
rdf.loc[rdf[col] == 1, "NEW"] = rdf.loc[rdf[col] == 1, "NEW"] + ("," + col)
rdf["NEW"] = rdf["NEW"].str.strip(",")
答案 2 :(得分:0)
这可以完成工作
let list: [ReminderModel] = [
ReminderModel(text: "Buy Bananas", closed: true),
ReminderModel(text: "Meet John", closed: false),
ReminderModel(text: "MMhh", closed: false),
ReminderModel(text: "4", closed: false),
ReminderModel(text: "5", closed: false),
ReminderModel(text: "6", closed: false),
]
var current: Int = 0
struct ReminderList: View {
var body: some View {
VStack() {
let last = list.last!
if list.count % 3 == 2 {
let secondLast = list.dropLast().last!
Reminder(closed: secondLast.closed, text: secondLast.text)
Reminder(closed: last.closed, text: last.text)
else {
HStack() {
Reminder(closed: last.closed, text: last.text)
}
}
}
}
}