簡體   English   中英

如何使用for循環將列值添加到數據框字典中,以便每個數據框都獲得一個唯一的列?

[英]How to add a column value into dataframe dictionary using a for loop so that each dataframe gets a unique column?

我想將codes添加到dataframe dictionary

 codes = [['01', '02', '03', '05', '06', '08', '10', '11', '13', '15', '17', '19', '21', '23', '25', '27', '29', '31', '33', '35', '37', '39', '43', '45', '4.55', '48', '52']
 #27Codes

 df = pd.read_excel(sales,sheet_name=None,ignore_index = True, skiprows=7)
 #27 Sheets
 for i in codes:
      for key in df.keys():
          df['Sheet1']['Code'] = i

我無法弄清楚為什么我似乎在每個數據幀中都有i 我想我理解為什么我無法弄清楚如何糾正它。

我是編碼的新手,我根本無法找到解決方案。

預期產量:

df['Sheet1']

   Date         Particulars    Inwards  Code

1 2017-04-01         EFG           12800    01
2 2017-07-22         ABC           100      01
3 2017-09-05         BCD           10000    01
4 2018-03-13         ABC           2000     01

Code列在下一個數據幀中應為02 ,依此類推。

這之后,我想concat的dataframes和group_by細節,然后寫入到Excel。

TIA

您可以使用詞典理解:

df = {k: v.assign(Code=x) for x, (k, v) in zip(codes, df.items())}

pd.DataFrame.assign允許您添加具有固定值的系列。

當讀取具有多個工作表的工作簿時, pandas.read_excel返回pandas.read_excel的字典,其中字典的鍵是工作表的名稱。

您似乎希望根據列表中的值為每個DataFrame添加列代碼。

你的代碼:

for i in codes:
    for key in df.keys():
        df['Sheet1']['Code'] = i

有兩個問題。 首先,在循環內部你根本不使用key 你總是訪問"Sheet1" 其次,這是一個雙循環,這意味着它將迭代每個代碼的每張表。

你想要的是並行循環值。 基本上你想要做以下事情:

for i in range(len(codes)):
    code = codes[i]
    key = df.keys()[i]
    df[key]['Code'] = code

這正是zip()作用。 因此,您可以更緊湊地編寫上述循環:

for code, key in zip(codes, df.keys()):
    df[key]['Code'] = code

這不是假設codes長度等於字典df的鍵數。

之后,您可以使用pandas.concat連接所有pandas.concat

combined = pd.concat(df)

哪個有效,因為concat

采用Series,DataFrame的序列或映射

...

如果傳遞了dict,則排序的鍵將用作keys參數,除非>它被傳遞,在這種情況下將選擇值(見下文)。

暫無
暫無

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

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