gpt4 book ai didi

python - DataFrame 应用并返回可变多行?

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:33 24 4
gpt4 key购买 nike

我有一个带有列(例如x)的数据框,我想在其中应用一个不平凡的函数,该函数将导致多列(固定)和多个(未知)行。有什么办法可以优雅地做到这一点吗?

我知道如果您返回一个Series,您可以对多个列执行此操作,但返回一个DataFrame会导致apply返回一个Series数据帧。我的解决方案有点像这样(模型):

def func(a):
return pd.DataFrame(np.ones((a, 2)), columns=['one', 'two'])

df = pd.DataFrame(data={'x': [1, 2, 1]})
pd.concat(df['x'].apply(func).tolist(), ignore_index=True)

是否有内置的方法可以做到这一点,或者至少有一些不太人为的已知解决方案?

最佳答案

我认为你的解决方案很好。

您还可以使用列表理解:

df1 = pd.concat([func(x) for x in df['x']], ignore_index=True)
print (df1)
one two
0 1.0 1.0
1 1.0 1.0
2 1.0 1.0
3 1.0 1.0

或者一点小技巧 - groupby通过唯一默认索引<​​ (level=0):

def func(a):
return pd.DataFrame(np.ones((a.iat[0], 2)), columns=['one', 'two'])


df2 = df.groupby(level=0)['x'].apply(func)
print (df2)
one two
0 0 1.0 1.0
1 0 1.0 1.0
1 1.0 1.0
2 0 1.0 1.0

df2 = df.groupby(level=0)['x'].apply(func).reset_index(drop=True)
print (df2)
one two
0 1.0 1.0
1 1.0 1.0
2 1.0 1.0
3 1.0 1.0

关于python - DataFrame 应用并返回可变多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46340983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com