我有一个数据框架,df,在那里我想根据列名将单个数据集分成2个。
df1
name date count pp ex
aa1 q122 3 30 aa7
bb1 q222 4 40 bb7
的
df2
name date count pp
aa1 q122 3 30
bb1 q222 4 40
df3
ex date count pp
aa7 q122 3 30
bb7 q222 4 40
df2 = df1.pop('ex')
df3 = df1.pop('name')
实现了正确的列输出,但格式不同。是否有更优雅的方式来实现这一点?
欢迎提出任何建议
只需输入感兴趣的列列表。
df = pd.DataFrame([{"A":1, "B": 2, "C": 3}, {"A":11, "B": 22, "C": 23}, {"A":31, "B": 32, "C": 33}])
A B C
0 1 2 3
1 11 22 23
2 31 32 33
df[["A", "B"]]
A B
0 1 2
1 11 22
2 31 32
df[["C", "A"]]
C A
0 3 1
1 23 11
2 33 31
差不多了。不过要注意的是…在创建虚拟列时最好使用pop
。仅临时使用和删除的列。对于你正在做的事情来说,这可能不是最佳方法。@slakkers的答案可能就是解决方案
df2=df1.copy()
df2.pop('ex')#Return item and drop from frame. Raise KeyError if not found.
df2
和
df3=df1.copy()
df3.pop('name')
df3=df3[['ex','date', 'count', 'pp']]
df3