Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中相互比较两个数字列表_Python_Pandas - Fatal编程技术网

在Python中相互比较两个数字列表

在Python中相互比较两个数字列表,python,pandas,Python,Pandas,我有一个数据框(可能是一个列表): 我想用以下方式比较列表“a”和列表“b”: 如您所见,将比较左列中的数字字符串与右列中的字符串。合并是具有相同边界数字的字符串,其中一个在合并期间(或之后)删除。为什么要删除字符串“010”?因为每个数字只能出现一次。您可以执行两个字符串切片操作,然后在公共数字上合并 a A 0 01 1 20 2 02 3 25 4 26 b B 0 10 1 13 2 14 3 64 4 32 a['x'] = a.A.str

我有一个数据框(可能是一个列表):

我想用以下方式比较列表“a”和列表“b”:


如您所见,将比较左列中的数字字符串与右列中的字符串。合并是具有相同边界数字的字符串,其中一个在合并期间(或之后)删除。为什么要删除字符串“010”?因为每个数字只能出现一次。

您可以执行两个字符串切片操作,然后在公共数字上合并

a

    A
0  01
1  20
2  02
3  25
4  26

b

    B
0  10
1  13
2  14
3  64
4  32

a['x'] = a.A.str[-1]
b['x'] = b.B.str[0]
b['B'] = b.B.str[1:]

m = a.merge(b)
您也可以使用
assign
在单行中执行此操作,而不会中断原始数据帧:

m = a.assign(x=a.A.str[-1]).merge(b.assign(x=b.B.str[0], B=b.B.str[1:]))
对于Unique,您需要转换为
set
,并检查其长度

v = (m['A'] + m['B'])
v.str.len() == v.apply(set).str.len()

0    False
1     True
2     True
3     True
dtype: bool

v[v.str.len() == v.apply(set).str.len()].tolist()
['013', '014', '264']

您应该注意的是,您实际上是在传递整数,而不是字符串。这意味着
A=[01,20,02,25,26]
A=[1,20,2,25,26]
相同。如果你总是知道你将要处理整数@cᴏʟᴅsᴘᴇᴇᴅ 有趣的方法,实际上长度研究解决了问题:)有趣的是上面的同事是否完成了一次生动的讨论:)我不会打扰他们:请在回答问题之前看一下标签。
v = (m['A'] + m['B'])
v.str.len() == v.apply(set).str.len()

0    False
1     True
2     True
3     True
dtype: bool

v[v.str.len() == v.apply(set).str.len()].tolist()
['013', '014', '264']
A = ['%02d' % i for i in A]
B = ['%02d' % i for i in B]
final = []
for i in A:
    for j in B:
        if i[-1] == j[0]:
            final.append(i + j[1:])