将数据框与系列合并
Posted
技术标签:
【中文标题】将数据框与系列合并【英文标题】:Merging a dataframe with a Series 【发布时间】:2015-08-16 07:33:54 【问题描述】:我的一位同事正在尝试将矩阵和系列结合起来,并试图查看是否有原生 pandas 方法来代替使用循环。
例如,如果我有一个由以下组成的数据框
1, 2, 3
4, 5, 6
7, 8, 9
和一个带有值的系列
13, 14, 15
那么想要的结果就是
1, 2, 3, 13
1, 2, 3, 14
1, 2, 3, 15
4, 5, 6, 13
4, 5, 6, 14
4, 5, 6, 15
7, 8, 9, 13
7, 8, 9, 14
7, 8, 9, 15
有没有pandas特有的方法可以实现这个效果。我不确定具体要搜索什么来找到它,并且在我的脑海中尝试了几次足够相似的尝试都失败了。
【问题讨论】:
可能与:***.com/questions/13269890/… 我们可以假设Series和DataFrame使用相同的索引值吗? 【参考方案1】:您可以通过合并来做到这一点。如果您想要完整的笛卡尔积,您可以执行以下操作:
import pandas as pd
df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])
df['key'] = 0
ser = pd.DataFrame('data': [13,14,15], 'key': [0] * 3)
result = pd.merge(df, ser, on = 'key').drop('key', axis = 1)
我检查了结果,它看起来像你想要的。如果您在 pandas docs 中搜索“合并方法的简要入门(关系代数)”,则会获得更多信息。
【讨论】:
【参考方案2】:有人发布了一个答案,帮助我得到了我想要的东西,但在我回来接受之前将其删除。
基本上,我需要做的是将 Series 设为数据框,并为两者添加一个公共列,假设这些列被称为 a 和 b i just
In [1]: import pandas as pd
In [2]: a = pd.DataFrame(1:[1,4,7],2:[2,5,8],3:[3,6,9])
In [3]: a
Out[3]:
1 2 3
0 1 2 3
1 4 5 6
2 7 8 9
In [5]: b = pd.DataFrame(4:[13,14,15])
In [6]: b
Out[6]:
4
0 13
1 14
2 15
In [7]: a["key"] = 1
In [8]: b["key"] = 1
In [9]: c = a.merge(b, on="key")
In [10]: c
Out[10]:
1 2 3 key 4
0 1 2 3 1 13
1 1 2 3 1 14
2 1 2 3 1 15
3 4 5 6 1 13
4 4 5 6 1 14
5 4 5 6 1 15
6 7 8 9 1 13
7 7 8 9 1 14
8 7 8 9 1 15
In [11]: del c["key"]
In [12]: c
Out[12]:
1 2 3 4
0 1 2 3 13
1 1 2 3 14
2 1 2 3 15
3 4 5 6 13
4 4 5 6 14
5 4 5 6 15
6 7 8 9 13
7 7 8 9 14
8 7 8 9 15
In [13]:
【讨论】:
以上是关于将数据框与系列合并的主要内容,如果未能解决你的问题,请参考以下文章
pandas 将数据框与 NaN(或“未知”)合并以查找缺失值