![](/img/trans.png)
[英]How to make a dataframe of 0 and 1 such that each unique value is a column?
[英]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.