我试图通过函数处理和更新数据框中的行,并返回数据框以完成使用。当我尝试将dataframe返回到原始函数调用时,它返回一个系列,而不是预期的列更新。下面是一个简单的例子:
df = pd.DataFrame(['adam', 'ed', 'dra','dave','sed','mike'], index =
['a', 'b', 'c', 'd', 'e', 'f'], columns=['A'])
def get_item(data):
comb=pd.DataFrame()
comb['Newfield'] = data #create new columns
comb['AnotherNewfield'] = 'y'
return pd.DataFrame(comb)
使用apply校准函数:
>>> newdf = df['A'].apply(get_item)
>>> newdf
a A Newfield AnotherNewfield
a adam st...
b A Newfield AnotherNewfield
e sed st...
c A Newfield AnotherNewfield
d dave st...
d A Newfield AnotherNewfield
d dave st...
e A Newfield AnotherNewfield
s NaN st...
f A Newfield AnotherNewfield
m NaN str(...
Name: A, dtype: object
>>> type(newdf)
<class 'pandas.core.series.Series'>
我假设apply()在这里不好,但我不太确定我应该如何通过函数“更新”这个数据帧
编辑:我道歉,但我似乎无意中删除了编辑中的示例函数。当我尝试在其他帖子中发现的其他一些东西时,我在这里添加了它
以稍微不同的方式使用单个变量进行测试-并返回多个系列变量->;似乎工作,所以我会看看这是我可以在我的实际情况和更新的东西
def get_item(data):
value = data #create new columns
AnotherNewfield = 'y'
return pd.Series(value),pd.Series(AnotherNewfield)
df['B'], df['C'] = zip(*df['A'].apply(get_item))
对于任何想找到答案的人来说,我在执行另一篇文章中找到的代码时得到了想要的结果。将发布该家伙的姓名以表彰他,但这基本上允许我编辑函数并通过apply函数获取在不同列中创建的数据:
它带来的唯一问题是-括号和逗号与数据一起出现。我打算在函数之外的代码中去掉它。也许这个
您可以使用
groupby
和apply
从apply
调用中获取数据帧,如下所示:输出:
相关问题 更多 >
编程相关推荐