我有两组不同的数据传递给方法。一个是熊猫数据框,另一个是数组。数据框具有我要映射到数组的一列。像这样
data = {'index':[2, 5, 1, 3],
'file':["file1", "file2", "file3","file4" ]}
# Create DataFrame
df = pd.DataFrame(data)
labels = ["rope", "dope", "goat", "badger"]
for x,y in zip(df, labels):
print(x[0])
print(y)
我想要的输出看起来像这样:
file1,涂料 file2,涂料 file3,山羊
是否有一种简单的方法可以做到这一点,或者我需要遍历两个数组并构建一个新数组?
答案 0 :(得分:4)
more-itertools
具有一种名为interleave
的方法,可以为您执行此操作。
但是,如果您不想使用该软件包,则只需使用配方(它使用zip
和itertools.chain
):
print(*itertools.chain(*zip(data['fields'], labels)), sep=', ')
结果:
file1, rope, file2, dope, file3, goat, file4, badger
答案 1 :(得分:0)
好,所以我问了一下就解决了。我比平常更笨。
data = {'index':[2, 5, 1, 3],
'file':["file1", "file2", "file3","file4" ]}
# Create DataFrame
df = pd.DataFrame(data)
files = df["file"]
print(files)
labels = ["rope", "dope", "goat", "badger"]
for x,y in zip(files, labels):
print(x)
print(y)
答案 2 :(得分:0)
只需同时使用list
和zip
来获取输出。
data = {'index':[2, 5, 1, 3],
'file':["file1", "file2", "file3","file4" ]}
labels = ["rope", "dope", "goat", "badger"]
# Create DataFrame
df = pd.DataFrame(data)
output = list(zip(df['file'], labels))
输出将是:
[('file1', 'rope'), ('file2', 'dope'), ('file3', 'goat'), ('file4', 'badger')]
答案 3 :(得分:0)
IIUC,
您要按索引排序,然后创建一个新数组?
import itertools
df.sort_index(inplace=True)
new_arr = list(zip(df['file'],labels))
print(list(itertools.chain(*new_arr)))
out:
['file3', 'rope', 'file1', 'dope', 'file4', 'goat', 'file2', 'badger']