如何用以前的值填充数据框? [复制]
Posted
技术标签:
【中文标题】如何用以前的值填充数据框? [复制]【英文标题】:how to fill dataframe with former value? [duplicate] 【发布时间】:2019-11-09 03:28:31 【问题描述】:我从 excel 文件中导入数据。但是excel文件中合并单元格的格式在python中不匹配。因此,我不得不修改python中的数据。
例如:我在python中导入的数据是这样的
0 aa
1 NaN
2 NaN
3 NaN
4 b
5 NaN
6 NaN
7 NaN
8 NaN
9 ccc
10 NaN
11 NaN
12 NaN
13 dd
14 NaN
15 NaN
16 NaN
我想要的结果是:
0 aa
1 aa
2 aa
3 aa
4 b
5 b
6 b
7 b
8 b
9 ccc
10 ccc
11 ccc
12 ccc
13 dd
14 dd
15 dd
16 dd
我尝试使用 for 循环来解决问题。但这花了很多时间,而且我有一个庞大的数据集。不知道有没有更快的方法。
【问题讨论】:
您正在将数据加载到pandas
数据框,对吧?
数据类型应该是字符串而不是浮点数,抱歉
如果您对问题有补充,最好编辑问题并将其添加到那里,而不是在评论中。
@Itamar Mushkin 是的
转换类型-df = df.astype(str)
【参考方案1】:
看起来像 .fillna()
is your friend – 引用文档::
我们还可以向前或向后传播非空值。
>>> df
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN 4
>>> df.fillna(method='ffill')
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 3.0 4.0 NaN 5
3 3.0 3.0 NaN 4
【讨论】:
啊,打败我了 :-) @AKX 你能帮我重新修改问题格式吗?【参考方案2】:这正是pandas
中.fillna()
函数的使用
【讨论】:
【参考方案3】:您可以借助apply
和fillna
方法获得您想要的结果:-
import pandas as pd
import numpy as np
df = pd.DataFrame(data = 'A':['a', np.nan, np.nan, 'b', np.nan])
l = []
def change(value):
if value == "bhale":
value = l[-1]
return value
else:
l.append(value)
return value
# First converting NaN values into any string value like `bhale` here
df['A'] = df['A'].fillna('bhale')
df["A"] = df['A'].apply(change) # Using apply method.
df
希望对你有帮助。
【讨论】:
以上是关于如何用以前的值填充数据框? [复制]的主要内容,如果未能解决你的问题,请参考以下文章