gpt4 book ai didi

python - 如何返回多列和限制行

转载 作者:行者123 更新时间:2023-12-04 03:25:30 25 4
gpt4 key购买 nike

在 pandas 中,我得到一个函数获取一列的值并将其结果返回到两列。现在我还想限制使用的行/返回结果的行。我知道我可以像这样返回多个列:

df = pd.DataFrame({'a':['foo bar', 'bar foo', 'foo foo', 'bar baz'], 
'b': ['']*4,
'c': ['']*4})

def func(text):
return pd.Series(text.split(' ', maxsplit=1))

df[['b', 'c']] = df.a.apply(func)

如果我有一个只返回单个列的函数,那么它会起作用:

df.loc[:2, 'b'] = df.loc[:2, 'a'].apply(lambda x: x+' baz')

但是,如果我结合这两种方法,只有 np.NaN 会在相应的单元格中生成,正如您从这段代码中看到的那样。

df.loc[:2, ['b', 'c']] = df.loc[:2, 'a'].apply(func)

最佳答案

你需要添加to_numpy()来消除索引和列不同的影响,DataframeSeries都是索引敏感的,所以如果索引或列不匹配,输出将返回 NaN

df.loc[:2, ['b', 'c']] = df.loc[:2, 'a'].apply(func).to_numpy()
df
Out[227]:
a b c
0 foo bar foo bar
1 bar foo bar foo
2 foo foo foo foo
3 bar baz

检查你的输出

df.loc[:2, 'a'].apply(func)
Out[228]:
0 1
0 foo bar
1 bar foo
2 foo foo

columns 是 [0, 1] 而不是 ['b', 'c'] 这将使分配失败

关于python - 如何返回多列和限制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67689506/

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