将df1附加到df2的Pandas在resu中得到0s/NaNs

2024-10-02 22:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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

^{pr2}$

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

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


Tags: columns数据函数dataframerunsreturnspddf1
2条回答

好吧,这里有几件事。你漏掉了代码,我不得不填补空白。例如,您没有定义doStuff,所以我不得不这样做。在

doStuff = lambda w, r, e: w + r + e

有了这个定义,你的代码就不能运行了。我得猜你想干什么。我猜您希望在其他列旁边有一个名为'specialSauce'的附加列。在

所以,这就是我如何设置和解决问题的方法。在

设置和解决方案

^{pr2}$

您试图使用^{}。根据链接文档,它将指定为参数的DataFrame附加到要附加到的DataFrame的末尾。您可能想使用^{}。在

据我所知,你的问题似乎与你在结果中得到NaN有关。在

这样做的原因是,您试图在一个数据帧与另一个数据帧之间.append(),而它们没有相同的列。在

df2有一个额外的列,即用apply()和{}创建的列,而{}没有该列。当尝试append一个pd.DataFrame到另一个时,结果将有所有列都是pd.DataFrame对象。当然,由于df1中不存在此列,因此您将为['specialSauce']提供一些NaN。在

如果使用pd.concat(),这是相同的,在本例中,两个方法都执行相同的操作。为了使结果更接近所需的结果,您可以使用ignore_index标志,如下所示:

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

这至少会为结果pd.DataFrame提供一个“fresh”索引。在

编辑

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

^{pr2}$

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

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

^{3}$

我希望这有帮助,如果没有,请重新描述一下你所追求的。在

相关问题 更多 >