熊猫:添加一列数组

时间:2019-02-27 09:32:27

标签: python pandas

我想做一些(我认为)应该很简单的事情。

我有一个DataFrame df和一个字符串tags数组:

>> print(df)
        Field1    Field2       
0           AA        10       
1           BB        20       
2           CC        30 
3           DD        40


>> print(tags)
['tag1', 'tag2', 'tag3']

我想在df中添加一个新列'Tags',其中包含字符串tags的数组。

>> print(df_out)
        Field1    Field2                       Tags     
0           AA        10   ['tag1', 'tag2', 'tag3'] 
1           BB        20   ['tag1', 'tag2', 'tag3']    
2           CC        30   ['tag1', 'tag2', 'tag3']
3           DD        40   ['tag1', 'tag2', 'tag3']

注意:在本示例中,同一行用于每行。在我的实际用例中,将是长度不同的数组。

但是我尝试的大多数事情都以错误消息结尾:

ValueError: Length of values does not match length of index

1 个答案:

答案 0 :(得分:4)

使用列表理解:

tags = ['tag1', 'tag2', 'tag3']
df['Tags'] = [tags for x in df.index]
print (df)
  Field1  Field2                Tags
0     AA      10  [tag1, tag2, tag3]
1     BB      20  [tag1, tag2, tag3]
2     CC      30  [tag1, tag2, tag3]
3     DD      40  [tag1, tag2, tag3]
  

在此示例中,同一行用于每行。在我的实际用例中,将是长度不同的数组。

有必要创建所有长度与DataFrame长度相同的值的嵌套列表:

tags = [['tag1', 'tag2', 'tag3'], ['tag2', 'tag3'], ['tag3'], ['tag3']]
df['Tags'] = tags
print (df)
  Field1  Field2                Tags
0     AA      10  [tag1, tag2, tag3]
1     BB      20        [tag2, tag3]
2     CC      30              [tag3]
3     DD      40              [tag3]