簡體   English   中英

如何將一系列Pandas數據框行變成具有多個值的一列?

[英]How to turn a series of Pandas dataframe rows into one column with multiple values?

現在,我有以下格式的Excel工作表,已將其轉換為Python中的Pandas數據框:

      Name            Column2      Unnamed: 2   Datatype   Definition
0   Entity   Accounts Receivable                                    
1    term1                                      char       term1
2    term2                                      numeric    term2
3    term3                                      char       term3
4   Entity      Accounts Payable                                    
5    term4                                      char       term4
6    term5                                      char       term5
7    term6                                      varchar    term6
8    term7                                      numeric    term7

我正在嘗試編寫一個代碼,該代碼將自動在Column2中的空單元格中填充每個術語名稱旁邊的“ Entity”對應值。 因此term1,term2和term3將是“應收帳款”,term4,term5,term6和term7將是“應付帳款”。

這是我到目前為止編寫的代碼:

   df = pd.read_excel('test.xlsx')

   df = df.replace(np.nan,'')

   values = df.values.tolist()

   ent_list = []

   for values[0] in values:
       if values[0][0] == 'Entity':
           ent_list.append(values[0][1])

   for j in range(len(values)):
       for e in range(len(ent_list)):
           while values[j][1] != ent_list[e]:
               values[j][1] = ent_list[e]
               break
           e += 1

當我打印出“值”時,得到以下信息:

[['Entity', 'Accounts Payable', '', '', ''], 
 ['term1', 'Accounts Payable', '', 'char', 'term1'], 
 ['term2', 'Accounts Payable', '', 'numeric', 'term2'], 
 ['term3', 'Accounts Payable', '', 'char', 'term3'], 
 ['Entity', 'Accounts Payable', '', '', ''], 
 ['term4', 'Accounts Payable', '', 'char', 'term4'], 
 ['term5', 'Accounts Payable', '', 'char', 'term5'], 
 ['term6', 'Accounts Payable', '', 'varchar', 'term6'], 
 ['term7', 'Accounts Payable', '', 'numeric', 'term7']]

理想情況下,它應如下所示:

[['Entity', 'Accounts Receivable', '', '', ''], 
 ['term1', 'Accounts Receivable', '', 'char', 'term1'], 
 ['term2', 'Accounts Receivable', '', 'numeric', 'term2'], 
 ['term3', 'Accounts Receivable', '', 'char', 'term3'], 
 ['Entity', 'Accounts Payable', '', '', ''], 
 ['term4', 'Accounts Payable', '', 'char', 'term4'], 
 ['term5', 'Accounts Payable', '', 'char', 'term5'], 
 ['term6', 'Accounts Payable', '', 'varchar', 'term6'], 
 ['term7', 'Accounts Payable', '', 'numeric', 'term7']]

有沒有一種方法可以使用我目前使用的方法來實現? 我必須想象使用VBA可以做到這一點,但是老實說,使用Python會讓我更自在。 我將繼續修改此代碼,但是由於我不太有經驗,所以我真的很沮喪。

我知道我可以手動執行此操作,但這會花費很長時間,因為這些報告需要經常生成,並且通常包含40,000至70,000行,因此,我更希望將其自動化。

df = df.fillna(method = 'ffill')

暫無
暫無

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

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