pandas:查找并附加到特定列中的第一个空单元格
我有下面的excel文件pandas:查找并附加到特定列中的第一个空单元格,pandas,dataframe,Pandas,Dataframe,我有下面的excel文件 1 | A | B | C | --------------------------- 2 | apple| banana | tomato| --------------------------- 3 | 3 | 4 | 4 | --------------------------- 4 | 9 | 7 | 3 | --------------------------- 5 | |
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是的,看起来这应该容易些。