2017-11-11 103 views
1

我有以下excel文件。熊貓:找到並追加到特定列中的第一個空單元格

1 | A | B | C | 
--------------------------- 
2 | apple| banana | tomato| 
--------------------------- 
3 | 3 | 4 | 4 | 
--------------------------- 
4 | 9 | 7 | 3 | 
--------------------------- 
5 |  | 2 | 1 | 
--------------------------- 
6 |  | 8 |  | 
--------------------------- 
7 |  |  |  | 
--------------------------- 

我用openpyxl讀取Excel文件,並轉換爲大熊貓數據幀。 問題是,我必須遍歷數據並追加到特定列的最後一行。

例如,

First data to append: 4 apple, 2 banana 
Second data to append: 3 apple 
Third data to append: 3 apple, 2 banana, 5 tomato 

讀取第一數據之後,將數據幀應該看起來像:

1 | A | B | C | 
--------------------------- 
2 | apple| banana | tomato| 
--------------------------- 
3 | 3 | 4 | 4 | 
--------------------------- 
4 | 9 | 7 | 3 | 
--------------------------- 
5 | *4 | 2 | 1 | 
--------------------------- 
6 |  | 8 |  | 
--------------------------- 
7 |  | *2 |  | 
--------------------------- 

讀取第二數據之後,將數據幀應該看起來像:

1 | A | B | C | 
--------------------------- 
2 | apple| banana | tomato| 
--------------------------- 
3 | 3 | 4 | 4 | 
--------------------------- 
4 | 9 | 7 | 3 | 
--------------------------- 
5 | 4 | 2 | 1 | 
--------------------------- 
6 | *3 | 8 |  | 
--------------------------- 
7 |  | 2 |  | 
--------------------------- 

讀取第三個數據後,數據框應該如下所示:

1 | A | B | C | 
--------------------------- 
2 | apple| banana | tomato| 
--------------------------- 
3 | 3 | 4 | 4 | 
--------------------------- 
4 | 9 | 7 | 3 | 
--------------------------- 
5 | 4 | 2 | 1 | 
--------------------------- 
6 | 3 | 8 | *5 | 
--------------------------- 
7 | *3 | 2 |  | 
--------------------------- 
8 |  | *2 |  | 
--------------------------- 

有沒有辦法將新數據追加到特定列的第一個空單元?謝謝。

+0

這不是很瑣碎的大熊貓,我會追加到列表中,然後使用它創建一個框架 –

+0

@StevenG耶這個樣子應該比較容易。 – Bossam

回答

0

盡我所能爲你做

d = defaultdict(list) 

d['apple'] = [3, 9] 
d['banana'] = [4, 7, 2, 8] 
d['tomato'] = [4, 3, 1] 

list_to_append = [ 
    dict(apple=4, banana=2), 
    dict(apple=3), 
    dict(apple=3, banana=2, tomato=5) 
] 

for a in list_to_append: 
    for k, v in a.items(): 
     d[k].append(v) 

pd.DataFrame.from_dict(d, orient='index').T 

    apple banana tomato 
0 3.0  4.0  4.0 
1 9.0  7.0  3.0 
2 4.0  2.0  1.0 
3 3.0  8.0  5.0 
4 3.0  2.0  NaN 
5 NaN  2.0  NaN 
相關問題