我想做一些(我认为)应该很简单的事情。
我有一个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
答案 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]