在 Python 中配对不同长度的数组
Pairing up arrays of different length in Python
给定两个不同长度的数组:
Column_a = [0, 1, 2, 3]
Column_b = [a, b, c, d, e, f, g, h, i, j]
我想将它们配对并提供一个 DataFrame,以便 Column_b 中的所有元素都与 Column_a 中的一个元素配对:
print(df)
Column_a Column_b
0 a
1 b
2 c
3 d
1 e
2 f
3 g
0 h
1 i
2 j
您可以执行一个简单的 for 循环来遍历最长的列并创建一个包含其中每个元素 x 的元组列表,分配给元素 [index_of_x % length_shortest_column].
例如:
df = []
for i,x in enumerate(column_b):
df.append( (x, column_a[i % len(a)]) )
这应该为您提供以下内容(假设 column_b 包含字符):
df = [('a', 0), ('b', 1), ('c', 2), ('d', 3),
('e', 0), ('f', 1), ('g', 2), ('h', 3),
('i', 0), ('j', 1)]
您可能想为 df 使用不同的数据结构,但总体思路仍然相同。唯一重要的一点是您应该遍历最长的列表。也许有更好的方法来做到这一点,但如果紧要关头,这应该会让你继续前进。
尝试 itertools.cycle
:
from itertools import cycle
Column_a = [0, 1, 2, 3]
Column_b = 'abcdefghij'
df = zip(cycle(Column_a if len(Column_a) < len(Column_b) else Column_b),
Column_b if len(Column_a) < len(Column_b) else Column_a)
print(list(df))
输出:
[(0, 'a'),
(1, 'b'),
(2, 'c'),
(3, 'd'),
(0, 'e'),
(1, 'f'),
(2, 'g'),
(3, 'h'),
(0, 'i'),
(1, 'j')]
请注意,Python 中的字符串值可用作可迭代对象。
给定两个不同长度的数组:
Column_a = [0, 1, 2, 3]
Column_b = [a, b, c, d, e, f, g, h, i, j]
我想将它们配对并提供一个 DataFrame,以便 Column_b 中的所有元素都与 Column_a 中的一个元素配对:
print(df)
Column_a Column_b
0 a
1 b
2 c
3 d
1 e
2 f
3 g
0 h
1 i
2 j
您可以执行一个简单的 for 循环来遍历最长的列并创建一个包含其中每个元素 x 的元组列表,分配给元素 [index_of_x % length_shortest_column].
例如:
df = []
for i,x in enumerate(column_b):
df.append( (x, column_a[i % len(a)]) )
这应该为您提供以下内容(假设 column_b 包含字符):
df = [('a', 0), ('b', 1), ('c', 2), ('d', 3),
('e', 0), ('f', 1), ('g', 2), ('h', 3),
('i', 0), ('j', 1)]
您可能想为 df 使用不同的数据结构,但总体思路仍然相同。唯一重要的一点是您应该遍历最长的列表。也许有更好的方法来做到这一点,但如果紧要关头,这应该会让你继续前进。
尝试 itertools.cycle
:
from itertools import cycle
Column_a = [0, 1, 2, 3]
Column_b = 'abcdefghij'
df = zip(cycle(Column_a if len(Column_a) < len(Column_b) else Column_b),
Column_b if len(Column_a) < len(Column_b) else Column_a)
print(list(df))
输出:
[(0, 'a'),
(1, 'b'),
(2, 'c'),
(3, 'd'),
(0, 'e'),
(1, 'f'),
(2, 'g'),
(3, 'h'),
(0, 'i'),
(1, 'j')]
请注意,Python 中的字符串值可用作可迭代对象。