我有一个DataFrame(称为df)对象,其列名为A,B和C,其中C是二进制变量。我正在尝试在循环中创建新变量A_1,A_0,B_1和B_0。这些变量是根据C的值创建的。例如A_0是我原始列A的一部分,其中C的对应值为0。
以下代码满足了我的需要:
variables=list('A', 'B')
for v in variables:
exec(f'{v}_0, {v}_1 = df.groupby("C")["{v}"]') #this returns a tuple
exec(f'{v}_0, {v}_1 = {v}_0[1], {v}_1[1]') #this returns what i need
这很笨拙,据我所知,exec()
是一种不好的做法。有更好的方法吗?
答案 0 :(得分:1)
只需使用字典即可。
data = {}
for v in ["A", "B"]:
a, b = df.groupby("C")[v]
data[v] = (a[1], b[1])
编辑:如注释中所述,创建键V_0
和V_1
,
data = {}
for v in ["A", "B"]:
a, b = df.groupby("C")[v]
data[f"{v}_0"] = a[1]
data[f"{v}_1"] = b[1]