Pandas:添加一列数组

2024-06-25 22:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个数据帧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

Tags: 字符串dftags数组事情ddaacc
1条回答
网友
1楼 · 发布于 2024-06-25 22:33:18

使用列表理解:

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]

In this example the same array is used for each row. In my real use case it will be differents arrays with different lengths.

有必要创建具有相同长度的所有值的嵌套列表,如数据帧的长度:

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]

相关问题 更多 >