我的数据框缺少特定列中的数据。举一个具体的例子,请将其作为df。
my_list = ["A", " ",31, "A", 5,32, " " ,5, 35, "B", " " , 14, "B", 4, 23, " " , 4, 26, "B", 7, 25, " ", 7, 15]
df = pd.DataFrame(np.array(my_list).reshape(8,3), columns = list("xyz"))
看起来像
x y z
0 A 31
1 A 5 32
2 5 35
3 B 14
4 B 4 23
5 4 26
6 B 7 25
7 7 15
缺失的数据可能不一定像上面那样方便。
我想要做的是填充列x中的所有空单元格,同时填充列x和y。在上面的df中,对于行1,y = 5与x =" A"相关联。因此,当我进入第2行时,我将使用" A"填充x。 x到y的关系应该是一对多的。因此,y的不同值可以与x的相同值相关联。但是,y到x的关系应该是唯一的。期望的最终结果是
x y z
0 A 31
1 A 5 32
2 A 5 35
3 B 14
4 B 4 23
5 B 4 26
6 B 7 25
7 B 7 15
我在这里有两个问题:
我尝试循环遍历行并拾取x和y列值以形成字典,其中y是键,x是值。然后使用字典,我再次循环数据框以填充列x。是否有更多Pandas有效的方法呢?
答案 0 :(得分:2)
如何对y
进行分组并更改x
值,并将df
的值设为x == ' '
?
In [31]: df.loc[df.x == ' ', 'x'] = df.groupby(['y'])['x'].transform('shift')
In [32]: df
Out[32]:
x y z
0 A 31
1 A 5 32
2 A 5 35
3 B 14
4 B 4 23
5 B 4 26
6 B 7 25
7 B 7 15