pandas:查找并附加到特定列中的第一个空单元格

pandas:查找并附加到特定列中的第一个空单元格,pandas,dataframe,Pandas,Dataframe,我有下面的excel文件 1 | A | B | C | --------------------------- 2 | apple| banana | tomato| --------------------------- 3 | 3 | 4 | 4 | --------------------------- 4 | 9 | 7 | 3 | --------------------------- 5 | |

我有下面的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文件,并将其转换为pandas-dataframe。 问题是,我必须循环遍历数据并附加到特定列的最后一行

比如说,

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   |       |
---------------------------
读取第二个数据后,数据帧应如下所示:

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   |       |
---------------------------
读取第三个数据后,dataframe应该如下所示:

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   |       |
---------------------------

是否有方法将新数据附加到特定列的第一个空单元格?谢谢。

我能为你做的最好的

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

我能为你做的最好的

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

这不是很简单,我会附加到列表中,然后用it@StevenG是的,看起来这应该更容易。这不是很简单,我会附加到列表中,然后用it@StevenG是的,看起来这应该容易些。