gpt4 book ai didi

python - pandas 将 df1 附加到 df2 得到结果 0s/NaN

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:07 26 4
gpt4 key购买 nike

我有 2 个数据框。 df1 包含一系列值。

df1 = pd.DataFrame({'winnings': cumsums_winnings_s, 'returns':cumsums_returns_s, 'spent': cumsums_spent_s, 'runs': cumsums_runs_s, 'wins': cumsums_wins_s, 'expected': cumsums_expected_s}, columns=["winnings", "returns", "runs", "wins", "expected"])

df2 通过一个函数运行每一行,该函数需要 3 列并为每行生成一个结果 -specialSauce

df2=  pd.DataFrame(list(map(lambda w,r,e: doStuff(w,r,e), df1['wins'], df1['runs'], df1['expected'])), columns=["specialSauce"])


print(df2.append(df1))

生成除 df1 的 NaN 之外的所有 df1 列(如果 df1/df2 在附加中切换,则反之亦然)

所以我遇到的问题是如何正确附加这两个数据帧。

最佳答案

据我了解,您的问题似乎与您在结果DataFrame中得到NaN有关。

原因是您试图将一个数据帧.append()添加到另一个数据帧,而它们没有相同的列。

df2 有一个额外的列,是用 apply()doStuff 创建的,而 df1 则有没有那个专栏。当尝试将一个pd.DataFrame附加到另一个pd.DataFrame时,结果将使所有列都是pd.DataFrame对象。当然,您的 ['specialSauce'] 将会有一些 NaN,因为 df1 中不存在该列。

如果您使用pd.concat(),这将是相同的,在这种情况下,两种方法都会执行相同的操作。为了使结果更接近您想要的结果,您可以做的一件事是使用 ignore_index 标志,如下所示:

>> df2.append(df1, ignore_index=True)

这至少会给你一个结果pd.DataFrame的“新鲜”索引。

编辑

如果您要寻找的是将 doStuff 的结果以新列的形式“附加”到现有 df 的末尾(['specialSauce']),那么你需要做的就是像这样使用 pd.concat() :

>> pd.concat([df1, df2], axis=1)

这将返回您想要的结果pd.DataFrame

如果您有一个 pd.Series 要添加到 df1 的列中,那么您需要像这样添加它:

>> df1['specialSauce'] = <'specialSauce values'>

我希望这对您有所帮助,如果没有,请重新表述您所追求的内容。

关于python - pandas 将 df1 附加到 df2 得到结果 0s/NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36879924/

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