我如何根据奇偶校验条件将一些信息从一个设备传送到另一个设备?

How can i put some information from a device to another device based on a parity condition?

我必须在工作中解决 pandas 中的一个问题,我有一个 .csv 文件,其中包含如下信息:

元素 --- 票证
1-X1211 --- TT0045
1-X1212

我有 2 个元素根据 2 个条件形成一对:

  1. 该对中的两个元素的前 6 个字符必须相同。
  2. 最后一个数字组成一对,像这样 1 和 2, 3 和 4, 5&6, 7&8, 9&0。 在这种情况下,您可以看到一对:1-X1211 与 1-X1212 对。

我需要做的是将票从对中的一个元素关联到对中的另一个元素(如果票首先存在)。因此,在这种情况下,从 1-X1211 -> TT0045 复制票并将其放在 1-X1212 对的另一个元素上。最后它应该是这样的:

元素

1-X1211 --- TT0045

1-X1212 --- TT0045

我无法分享代码,因为我不知道该怎么做。

谢谢, 尤利亚

假设以下数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame({'ID': ['1-x1211', '1-x1212'], 'Ticket': ['TT0045', '']})
print(df)

# Output
        ID  Ticket
0  1-x1211  TT0045
1  1-x1212        

创建映射字典:

# 1 -> 2, 3 -> 4, ..., 9 -> 0
odd_to_even = {'1': '2', '3': '4', '5': '6', '7': '8', '9': '0'}

# Extract last char of the ID and replace it by 2, 4, 6, 8 or 0
even_id = df['ID'].astype(str).str[:-1] + df['ID'].astype(str).str[-1].replace(odd_to_even)

# Now find the right ticket for pairwise ID
df['Ticket'] = df.replace('', np.nan).groupby(even_id)['Ticket'].transform('first')
print(df)

# Output
        ID  Ticket
0  1-x1211  TT0045
1  1-x1212  TT0045