鉴于此数据框:
import pandas as pd
df=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
df
A B C
0 1 4 7
1 2 5 8
2 3 6 9
我想创建 3 个新的数据框;每列一个。我可以这样一次做这个:
a=pd.DataFrame(df[['A']])
a
A
0 1
1 2
2 3
但不是为每一列都这样做,我想循环进行。
这是我尝试过的:
a=b=c=df.copy()
dfs=[a,b,c]
fields=['A','B','C']
for d,f in zip(dfs,fields):
d=pd.DataFrame(d[[f]])
...但是当我打印每一个时,我得到了整个原始数据框,而不仅仅是感兴趣的列。
a
A B C
0 1 4 7
1 2 5 8
2 3 6 9
更新:我的实际数据框将包含一些我不需要的列,并且这些列不会按任何顺序排列,因此我需要能够按名称获取列。
提前致谢!
或者你可以试试这个,而不是创建副本df
,这个方法将返回结果为 single Dataframe
,而不是 a list
,但是,我认为保存Dataframe
到列表中更好
dfs=['a','b','c']
fields=['A','B','C']
variables = locals()
for d,f in zip(dfs,fields):
variables["{0}".format(d)] = df[[f]]
a
Out[743]:
A
0 1
1 2
2 3
b
Out[744]:
B
0 4
1 5
2 6
c
Out[745]:
C
0 7
1 8
2 9
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句