将列添加到由 Python 中的 for 循环计算的数据框中

ani*_*asp 5 python for-loop pandas

import re
#Creating several new colums with a for loop and adding them to the original df.
#Creating permutations for a second level of binary variables for df
for i in list_ib:
    for j in list_ib:
        if i == j:
            break
        else:            
            bina = df[i]*df[j]
            print(i,j)
Run Code Online (Sandbox Code Playgroud)

i 是属于数据框 (df) 的二进制列,j 是相同的列。我已经计算了每列与每列的乘法。我现在的问题是,如何将所有新的二进制产品列添加到原始 df 中?

我试过了:

df = df + df[i,j,bina]
Run Code Online (Sandbox Code Playgroud)

但我没有得到我需要的结果。有什么建议?

Tha*_*nos 6

据我了解,i,j,bina不属于您的 df. 为其中每一个构建数组,每个数组元素代表一个“行”,一旦准备好所有行i,j,bina,就可以像这样连接:

>>> new_df = pd.DataFrame(data={'i':i, 'j':j, 'bina':bina}, columns=['i','j','bina'])
>>> pd.concat([df, new_df], axis=1)
Run Code Online (Sandbox Code Playgroud)

或者,一旦您'i', 'j' and 'bina'收集了所有数据并假设您在单独的数组中拥有每个数据的数据,您可以执行以下操作:

>>> df['i'] = i
>>> df['j'] = j
>>> df['bina'] = bina
Run Code Online (Sandbox Code Playgroud)

仅当这三个数组的元素数与 DataFrame df 中的行数一样多时,此方法才有效。

我希望这有帮助!