合并系列和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
另一答案
您通常使用Series
从list
(或dict
或DataFrame
或......)添加一行到现有的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
,最后的解决方案是在Series
和loc
之前在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'操作的结果