基于特定列将原始数据集分离为两个数据集



我有一个数据框架,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

最新更新