簡體   English   中英

將一個列表的字符串元素附加到 python 中每個子列表中另一個列表的 integer 元素

[英]attach the string element of one list to the integer element of another subsist of a list in each sub list in python

我試圖將 pandas 數據框中的列名添加到該列中的每個元素,因此我將列名添加到列表中,並將行迭代到列表中。 所以現在我需要做這樣的事情:

names=['a','c']
list_of_lists = [[1, 2], [3, 4]]
for nlist in list_of_lists:
    for element in nlist:
        print(f"{i}_{list_of_lists[element]}" for i in range( len(name)))

所以我需要它打印的是[[a_1,c_2],[a_3,c_4]]但這確實[[a_1,a_2],[c_3,c_4]

您可以編寫一個嵌套列表推導,首先循環遍歷您的列表列表,然后將其壓縮到名稱列表中。

>>> [[f'{i}_{j}' for i,j in zip(names, sub)] for sub in list_of_lists]
[['a_1', 'c_2'], ['a_3', 'c_4']]

嘗試更緊密地匹配所要求的內容(即沒有引號):

class C():
    def __repr__(self):
        return self.s
    def __init__(self,c,n):
        self.s = ("%s_%d" % (c,n))
    
print( [[C(*x) for x in zip(names,lol)] for lol in list_of_lists] )

您的代碼中似乎有一個小錯誤。 在最后一行,使用了名稱,但從未定義過。

我想問你,真的只是用你想要做的新元素名稱打印你的表格還是修改你的表格?

如果你只想打印一個 str,我同意 Cory Kramer 的觀點,但如果你想要改變你的表格,我建議這個解決方案:

column_names = ['a', 'c']
columns = [[1, 2], [3, 4]]

for column_counter in range(len(column_names)):
    for row_counter in range(len(columns[column_counter])):
        element = columns[column_counter][row_counter]
        # Add new element to new column
        columns[column_counter][row_counter] = str(column_names[column_counter] + '_' + str(element))
print(columns)

output:

[['a_1', 'a_2'], ['c_3', 'c_4']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM