【问题标题】:Assign a list to a pandas dataframe element将列表分配给 pandas 数据框元素
【发布时间】:2020-09-30 17:49:57
【问题描述】:

我想在数据框中添加一列,并为其每个元素设置一个列表,执行以下代码后,没有任何变化,

df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})  
df['C'] = 0 
for i in range(len(df)):
    lst = [6,7,8]
    data.iloc[i]['C'] = []
    data.iloc[i]['C'] = lst

另外,基于Assigning a list value to pandas dataframe,我在上面的代码上尝试了df.at[i,'C'],出现如下错误:'setting an array element with a sequence.'

【问题讨论】:

  • 尝试将C列​​的dtype改为object。

标签: python pandas dataframe


【解决方案1】:

您可以将np.tilenp.ndarray.tolist 一起使用

l = len(df)
df['C'] = np.tile([6,7,8],(l,1)).tolist()
df
   A  B          C
0  1  4  [6, 7, 8]
1  2  5  [6, 7, 8]
2  3  6  [6, 7, 8]

【讨论】:

    【解决方案2】:

    一个想法是使用列表推导:

    lst = [6,7,8]
    
    df['C'] = [lst for _ in df.index]
    
    print (df)
       A  B          C
    0  1  4  [6, 7, 8]
    1  2  5  [6, 7, 8]
    2  3  6  [6, 7, 8]
    

    在你为我工作的解决方案中:

    df['C'] = ''
    for i in range(len(df)):
        lst = [6,7,8]
        df.iloc[i, df.columns.get_loc('C')] = lst
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2021-12-04
      • 2014-11-03
      • 2019-01-14
      • 2019-01-22
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多