2017-11-11 68 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 
相关问题