熊猫地图数据框列
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
因此,对于每个 n1
和 n2
,在 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
而不是 n
到 g
对。将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
【讨论】:
以上是关于熊猫地图数据框列的主要内容,如果未能解决你的问题,请参考以下文章