Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过apply将静态列表添加到新的Dataframe列_Python_Python 2.7_Pandas - Fatal编程技术网

Python 通过apply将静态列表添加到新的Dataframe列

Python 通过apply将静态列表添加到新的Dataframe列,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有一个复杂的函数,它为数据帧中的每一行生成一个列表。我想将该列表作为名为mylist的新列中每一行的值 熊猫执行此操作的能力似乎取决于起始数据帧中的列数 import pandas as pd df = pd.DataFrame(data=[['A', 'D'], ['B', 'E'], ['C', 'F']], columns=['col1', 'col2']

我有一个复杂的函数,它为数据帧中的每一行生成一个
列表
。我想将该
列表
作为名为
mylist
的新列中每一行的值

熊猫执行此操作的能力似乎取决于起始数据帧中的列数

import pandas as pd

df = pd.DataFrame(data=[['A', 'D'],
                        ['B', 'E'],
                        ['C', 'F']],
                  columns=['col1', 'col2'])

df1 = pd.DataFrame(data=[['A', 'D', 'G'],
                        ['B', 'E', 'H'],
                        ['C', 'F', 'I']],
                  columns=['col1', 'col2', 'col3'])

def add_list(row):
    return [1,3, 3]

df['mylist'] = df.apply(add_list, axis=1)
print df
收益率:

  col1 col2       list
0    A    D  [1, 3, 3]
1    B    E  [1, 3, 3]
2    C    F  [1, 3, 3]
此附加代码产生
ValueError:传递的项目数错误3,放置意味着1
。为什么起始
数据帧中的列数会产生影响

df1['mylist'] = df1.apply(add_list, axis=1)
print df1
如果我将函数更改为以下(添加一个元素),则没有错误:

def add_list(row):
    return [1,3, 3, 4]
预期产出:

  col1 col2  col3      list
0    A    D    G   [1, 3, 3]
1    B    E    H   [1, 3, 3]
2    C    F    I   [1, 3, 3]

这是一种奇怪的行为。一种解决方案似乎是返回一个元组而不是列表

def add_list(row):
    return (1, 3, 3)

df1['mylist'] = df1.apply(add_list, axis=1).apply(list)

在最后一行中,您会注意到元组一旦进入数据帧,就会转换为列表。

您要查找的实际输出是什么?@JoeR添加了预期输出Uh,这真的很奇怪……这是代码中的一个错误吗?在我看来似乎有问题!但是这个解决方案看起来不是什么大交易是的,它很有效。然后,如果需要,我可以使用
lambda
函数将项目转换回列表。