【问题标题】:set multiple Pandas DataFrame columns to values in a single column or multiple scalar values at the same time将多个 Pandas DataFrame 列设置为单个列中的值或同时设置多个标量值
【发布时间】:2020-03-07 01:48:40
【问题描述】:

我正在尝试将多个新列设置为一列,并将多个新列分别设置为多个标量值。也做不到。除了单独设置每个之外,还有其他方法吗?

df=pd.DataFrame(columns=['A','B'],data=np.arange(6).reshape(3,2))
df.loc[:,['C','D']]=df['A']
df.loc[:,['C','D']]=[0,1]

【问题讨论】:

    标签: python pandas


    【解决方案1】:
    for c in ['C', 'D']:
        df[c] = d['A']
    
    df['C'] = 0
    df['D'] = 1
    

    【讨论】:

    • 感谢您的回复,但我明确询问是否有一种方法可以在不直接分配一对一的情况下实现这一目标(我得到了循环,但仍然想在 pandas 库中看到一些给我分配的东西) .特别是一一分配标量。想象一下,如果我有很多
    • 我不知道,但为什么要反对 for 循环?它简单干净。
    【解决方案2】:

    也许这就是你要找的东西。

    df=pd.DataFrame(columns=['A','B'],data=np.arange(6).reshape(3,2))
    
    df['C'], df['D'] = df['A'], df['A']
    df['E'], df['F'] = 0, 1
    
    # Result
       A  B  C  D  E  F
    0  0  1  0  0  0  1
    1  2  3  2  2  0  1
    2  4  5  4  4  0  1
    

    【讨论】:

      【解决方案3】:

      assign 方法将在一个步骤中创建多个新列。您可以传递带有列和值的 dict() 以返回一个新的 DataFrame,并将新列附加到末尾。

      使用你的例子:

      df = df.assign(**{'C': df['A'], 'D': df['A']})
      

      df = df.assign(**{'C': 0, 'D':1})
      

      有关更多详细信息,请参阅此答案:https://stackoverflow.com/a/46587717/4843561

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 2018-05-21
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多