根据我的阅读,从 DataFrame
中添加和删除列很容易,但我想知道是否已经有一种方法可以实现我想要实现的目标,以便避免重新发明轮子。
假设我有 DataFrame
x
:
a b c
0 1 5 8
1 2 6 9
2 3 7 10
我想验证列名是否仅对应于列表 l
中包含的元素。如果 l
中的元素少于 x
中的列,我希望删除缺少的列。
例如,如果 l = ["a", "b"]
,x
将变为:
a c
0 1 8
1 2 9
2 3 10
另一方面,如果 l
中的元素多于 x
中的列,我想创建新的、相应命名的列,其中包含所有值列被设置为 0。
例如,如果 l = ["a", "b", "c", "d"]
,x
将变为:
a b c d
0 1 5 8 0
1 2 6 9 0
2 3 7 10 0
我可以做一个循环来检查 x
中的列名和 l
中的元素之间的一致性,但是还有比这更有效的方法吗?
最佳答案
如果需要,只需使用(感谢 @Bill 添加 .astype(np.int)。请注意,这会将整个数据帧转换为整数):
df.loc[:, l].fillna(0).astype(np.int)
案例一:
l = ["a", "b"]
df.loc[:, l].fillna(0).astype(np.int)
a b
0 1 5
1 2 6
2 3 7
案例二:
l = ["a", "b", "c", "d"]
df.loc[:, l].fillna(0).astype(np.int)
a b c d
0 1 5 8 0
1 2 6 9 0
2 3 7 10 0
关于Python - 使数据框的列与列表元素一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027368/