自从我将代码从一台计算机移植到另一台计算机后,我就遇到了一个非常奇怪的问题。我在这个系统上使用的是熊猫版本0.25.1,但我不确定我以前使用的熊猫版本。
问题如下:
我创建了一个简单的、未排序的(模拟)数据格式,我希望对这些值进行排序,并将所有的NaN值向前填充。
In [1]: import pandas as pd
...: import numpy as np
In [2]: test = pd.DataFrame({"group" : ["A", "A", "A", "B", "B", "B", "C", "C"],
...: "count" : [2, 3, 1, 2, 1, 3, 1, 2],
...: "value" : [10, np.nan, 30, np.nan, 19, np.nan, 25, np.nan]})
In [3]: test
Out[3]:
group count value
0 A 2 10.0
1 A 3 NaN
2 A 1 30.0
3 B 2 NaN
4 B 1 19.0
5 B 3 NaN
6 C 1 25.0
7 C 2 NaN但是,当我这样做时,我会丢失整个"group“列,并且它也不会出现在我的索引中。
In [4]: test.sort_values(["group", "count"]).groupby("group").ffill()
Out[4]:
count value
2 1 30.0
0 2 10.0
1 3 10.0
4 1 19.0
3 2 19.0
5 3 19.0
6 1 25.0
7 2 25.0我还尝试使用了下面的填充物,但这给了我同样的结果:
In [5]: test.sort_values(["group", "count"]).groupby("group").fillna(method = "ffill")
Out[5]:
count value
2 1 30.0
0 2 10.0
1 3 10.0
4 1 19.0
3 2 19.0
5 3 19.0
6 1 25.0
7 2 25.0有人知道我做错了什么吗?问题似乎与ffill方法有关,因为我可以在groupby上使用.mean()并保留分组。
发布于 2019-10-01 08:59:23
IICU,您必须使用“update`”将结果返回到dataframe
test.update(test.sort_values(["group", "count"]).groupby("group").ffill())
print(test)输出
group count value
0 A 2 10.0
1 A 3 10.0
2 A 1 30.0
3 B 2 19.0
4 B 1 19.0
5 B 3 19.0
6 C 1 25.0
7 C 2 25.0https://stackoverflow.com/questions/58181262
复制相似问题