我必须在pandas A
和B
中使用数据帧:
A:
A = pd.DataFrame({0:[1.24, 8.75, 4.32]})
0 1.24
1 8.75
2 4.32
其中0 1 2 3 4 5
是数据帧的索引
和另一个字符串作为索引的数据框:
B = pd.DataFrame({0:[9.43, 1.24, 9.09, 4.32, 8.85]}, index=['p_32','p_21','p_01','p_05','p_76'])
'p_32' 9.43
'p_21' 1.24
'p_01' 9.09
'p_05' 4.32
'p_76' 8.75
A
第一列中的所有数字都包含在B
中,但不是相反。我希望得到B
的行号与A
匹配的索引字符串,同时保留A
所以我需要:
'p_21'
'p_76'
'p_05'
答案 0 :(得分:2)
您可以使用isin()功能:
In [141]: B[B[0].isin(A[0])].index
Out[141]: Index(['p_21', 'p_05', 'p_76'], dtype='object')
In [142]: B[B[0].isin(A[0])]
Out[142]:
0
p_21 1.24
p_05 4.32
p_76 8.75
数据:
In [139]: A
Out[139]:
0
0 1.24
1 8.75
2 4.32
In [140]: B
Out[140]:
0
p_32 9.43
p_21 1.24
p_01 9.09
p_05 4.32
p_76 8.75
答案 1 :(得分:1)
我会通过使用连接操作来处理此程序。首先,在B上使用reset_index
使索引成为数据框中的新列。然后使用内部联接使用merge
函数将两个数据框组合在一起。确保在连接操作期间禁用排序。新数据框中的索引列将具有您想要的内容。
以下是关于联接http://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging
的pandas文档