合并系列和DataFrame

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并系列和DataFrame相关的知识,希望对你有一定的参考价值。

我想将一个系列与一个与dataframe列相同的索引合并。

我已经尝试过pd.concat,但这不起作用。

我想要

samp_series = pd.Series([1,2], index=['a', 'b'])
samp_df = pd.DataFrame({'a': [3,4], 'b': [5,6]})


want = pd.DataFrame({'a': [1, 3, 4], 'b': [2, 5, 6]})

我试过了:

pd.concat([samp_series, samp_df], axis=0)

我想要“想要”的数据帧。

答案

您可以将Series转换为pandas DataFrame,然后将transpose转换为列的索引。最后,您可以连接这两个数据帧:

want = pd.concat([pd.DataFrame(samp_series).T, samp_df], ignore_index=True)

print(want)
   a  b
0  1  2
1  3  5
2  4  6
另一答案

您通常使用Serieslist(或dictDataFrame或......)添加一行到现有的append。所以

samp_df.append(samp_series, ignore_index=True)

应该像魅力一样工作。

但是,你似乎愿意反过来并将Series添加到DataFrame。在这种情况下,您将不得不调整您的数据并将您的Series转换为DataFrame,以便其他功能正常工作:

samp_almost_series = pd.DataFrame(samp_series).T
wanted = samp_almost_series.append(samp_df)

如果你不想使用中间DataFrame,最后的解决方案是在Seriesloc之前在samp_df中的任何现有指数之前在sorting itaction中“插入”你的reseting it

samp_df.loc[-1] = samp_series
want = samp_df.sort_index().reset_index(drop=True)

但是这个解决方案成本更高,如果它的索引尚未排序,它将改变你的输出。

以上是关于合并系列和DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

循环并合并具有相同索引、相同列的 DataFrame(但是每个 DataFrame 有几列唯一)

如何将 DataFrame 中两列中的两个日期和时间合并为一列? [复制]

如何在几个不同的Dataframe上合并'groupby'操作的结果

4.3 合并重复的条件执行片段

我正在寻找一种有效的方法来连接和合并 pandas DataFrame 中关于某些标准的行

合并和填充 Pandas DataFrame