熊猫地图数据框列

Posted

技术标签:

【中文标题】熊猫地图数据框列【英文标题】:pandas map dataframes columns 【发布时间】:2016-06-05 10:38:21 【问题描述】:

我有两个数据框,第一个是值之间的成对连接:

df1 = pd.DataFrame('n1': [5,1,1,3,4,3,2,2],
                    'n2': [1,6,3,4,3,2,3,7])

   n1  n2
0   5   1
1   1   6
2   1   3
3   3   4
4   4   3
5   3   2
6   2   3
7   2   7

第二个表示哪些值属于每个组g

df2 = pd.DataFrame('n': [1,5,6,2,3,4,7,7],
                        'g': ['a','a','a','b','b','b','c','c'])

   g  n
0  a  1
1  a  5
2  a  6
3  b  2
4  b  3
5  b  4
6  c  7
7  c  7 

我正在尝试映射数据框以获取:

   n1  n2  g1  g2
0   5   1   a   a   
1   1   6   a   a
2   1   3   a   b
3   3   4   b   b
4   4   3   b   b
5   3   2   b   b
6   2   3   b   b
7   2   7   b   c

因此,对于每个 n1n2,在 df2 中创建两列,其中每个值所属的相应组。

到目前为止,我尝试使用以下方式进行映射:

df1['g1'] = df1['n1'].map(df2['g'])
df1['g2'] = df1['n2'].map(df2['g'])

但实际上这会返回:

   n1  n2 g1 g2
0   5   1  b  a
1   1   6  a  c
2   1   3  a  b
3   3   4  b  b
4   4   3  b  b
5   3   2  b  a
6   2   3  a  b
7   2   7  a  c

因为它映射到 df2.index 而不是 ng 对。将df2的索引设置为g

df2.index = df2['g']

导致以下错误:

InvalidIndexError:重新索引仅对唯一值索引有效 对象

【问题讨论】:

【参考方案1】:

将duplicates 放入df2,然后您就可以致电map

In [58]:
df2 = df2.drop_duplicates()
df2

Out[58]:
   g  n
0  a  1
1  a  5
2  a  6
3  b  2
4  b  3
5  b  4
6  c  7

In [61]:
df1[['g1','g2']] = df1.apply(lambda x: x.map(df2.set_index('n')['g']))
df1

Out[61]:
   n1  n2 g1 g2
0   5   1  a  a
1   1   6  a  a
2   1   3  a  b
3   3   4  b  b
4   4   3  b  b
5   3   2  b  b
6   2   3  b  b
7   2   7  b  c

【讨论】:

以上是关于熊猫地图数据框列的主要内容,如果未能解决你的问题,请参考以下文章

使用谷歌地图 API 计算熊猫数据帧中经纬度之间的距离

根据单词是不是大写拆分熊猫数据框列

爆炸熊猫数据框列

如何迭代熊猫数据框列中的元素?

数据框列数据 - 熊猫 - python

熊猫数据框列计算