Python 将dataframe函数应用于整个列
我有一些作用于列表并返回列表的函数。我想在一个数据框架上创建一个列,这样新的列就是作用于数据框架的某个其他列的函数之一返回的列表 在类似python的伪代码中:Python 将dataframe函数应用于整个列,python,pandas,Python,Pandas,我有一些作用于列表并返回列表的函数。我想在一个数据框架上创建一个列,这样新的列就是作用于数据框架的某个其他列的函数之一返回的列表 在类似python的伪代码中: def function(parameter, list): ... return output_list df['New Column'] = function(parameter, df['Old Column']) 我尝试了不同的选项,包括上面的代码,使用.apply()方法和其他方法。。。没有成功 有办法做到
def function(parameter, list):
...
return output_list
df['New Column'] = function(parameter, df['Old Column'])
我尝试了不同的选项,包括上面的代码,使用.apply()方法和其他方法。。。没有成功
有办法做到这一点吗?谢谢大家!
编辑:
有关解决方案,请参见Brian Pendleton的答案。数据帧中的列是熊猫的系列对象。只需从所需列表中创建一个系列
df['New_Column'] = pd.Series(data=function(parameter,list))
如果将
df[“old column”]
发送到函数,则将发送pandas.Series
对象。为什么不使用该系列并返回相同形状的新系列呢。然后,您可以直接使用分配给新列的内容。如果要向函数发送df[“old column”]
,则发送pandas.Series
对象。为什么不使用该系列并返回相同形状的新系列呢。然后,您可以直接使用分配给新专栏的内容。我想您应该:
- 应用返回列表的函数
- 将结果存储在
数据帧中
- 将列表拆分为不同的列
def my_funct(parameter):
return (1,2,3) + parameter
df = pd.DataFrame(np.random.randint(low=1, high=10, size=3), columns=['my_funct'])
#df['New Column'] = function(parameter, df['Old Column'])
df['my_funct'] = df['my_funct'].apply(lambda x: my_funct(x))
# After the function call the resulting lists are stored in one column
my_funct
0 [5, 6, 7]
1 [10, 11, 12]
2 [6, 7, 8]
# Here is how to split the list into several columns
df = df['my_funct'].apply(pd.Series)
0 1 2
0 5 6 7
1 10 11 12
2 6 7 8
我认为你想:
- 应用返回列表的函数
- 将结果存储在
数据帧中
- 将列表拆分为不同的列
def my_funct(parameter):
return (1,2,3) + parameter
df = pd.DataFrame(np.random.randint(low=1, high=10, size=3), columns=['my_funct'])
#df['New Column'] = function(parameter, df['Old Column'])
df['my_funct'] = df['my_funct'].apply(lambda x: my_funct(x))
# After the function call the resulting lists are stored in one column
my_funct
0 [5, 6, 7]
1 [10, 11, 12]
2 [6, 7, 8]
# Here is how to split the list into several columns
df = df['my_funct'].apply(pd.Series)
0 1 2
0 5 6 7
1 10 11 12
2 6 7 8
dataframe中包含的对象是列表吗?还是将
系列
对象视为列表?.apply()
是逐行将函数应用于系列
的方法。除此之外,您还没有提供太多的信息来处理。实际上,.apply()不起作用是因为您陈述的原因。如果我像这样使用函数“function(parameter,df['Old Column'])”,我将获得一个python列表。但是我没有办法将dataframe列等同于这样的列表的值。编辑:我可以做一个循环,但这似乎效率很低。dataframe中包含的对象是列表吗?还是将系列
对象视为列表?.apply()
是逐行将函数应用于系列
的方法。除此之外,您还没有提供太多的信息来处理。实际上,.apply()不起作用是因为您陈述的原因。如果我像这样使用函数“function(parameter,df['Old Column'])”,我将获得一个python列表。但是我没有办法将dataframe列等同于这样的列表的值。编辑:我可以做一个循环,但似乎效率很低。这对我来说很有意义。我必须弄清楚如何产生一个级数作为函数的输出。我会用谷歌搜索出来并报告。这对我来说很有意义。我必须弄清楚如何产生一个级数作为函数的输出。去谷歌搜索一下,然后再报告。