从旧 df 创建的数据框的问题

问题描述

我尝试使用现有数据框的列创建一个新数据框,但它没有按预期工作。第一个 df 是通过读取 csv 来创建的

例如

a  b  c
1  1  0
0  1  1
0  0  0
1  0  0

df2 = pd.DataFrame(df,columns=['a'])

a    
NaN
NaN
NaN
NaN

我该如何解决这个问题?在“a”的第一个数据帧中,dtype 是 int64

解决方法

快速解决,你的语法有点错误:

df = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]),columns=['a','b','c'])

df2 = pd.DataFrame(columns = ['a'])
df2['a'] = df['a']
df2


    a
0   1
1   4
2   7
,

@pookpash 解决方案也适用于这样的多列;

df2 = pd.DataFrame(columns = ['a','b'])
df2[['a','b']] = df[['a','b']]
,

这里有几个选项。如果您从上下文中知道要切出哪些变量,则可以通过将列表传递到 __getitem__ syntax

来返回仅包含这些列的视图
df2 = df[['a','b']]

>>> df
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9
>>> df2 = df[['a']]
>>> df2
   a
0  1
1  4
2  7

或者,如果用数字索引而不是按名称索引很重要(假设您的代码应该在不知道前两列名称的情况下自动执行此操作),那么您可以这样做

df2 = df.iloc[:,0:2]

另外,如果您只想制作 DataFrame 的副本,请使用:

df2 = df.copy()

使用任何适合您的问题