Dataframe 从旧df创建的数据帧存在问题

Dataframe 从旧df创建的数据帧存在问题,dataframe,nan,int64,Dataframe,Nan,Int64,我试图用现有数据框中的列创建一个新的数据框,但它没有按预期工作。通过读取csv创建第一个df 比如说 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”的数据类型是int64快速解决方案,您的语法稍有错误: df = pd.DataFrame(np.array([[1, 2, 3], [4, 5

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

比如说

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”的数据类型是
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

快速解决方案,您的语法有点错误:

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

这里你有几个选择。如果您从上下文中知道要切掉哪些变量,那么只需通过将列表传递到
\uuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu语法

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]
此外,如果您只想制作数据帧的副本,请使用:

df2 = df.copy()

使用任何适合您的问题的方法

这里您有两个选择。如果您从上下文中知道要切掉哪些变量,那么只需通过将列表传递到
\uuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu语法

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]
此外,如果您只想制作数据帧的副本,请使用:

df2 = df.copy()

使用适合您的问题的任何东西

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

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

@pookpash solutions也可以与这样的多个列一起工作

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


我也试过了。在这个错误中,我接受一个键错误。另外,我想使用旧df中的几个列。正如@Baume在他的回答中所指出的,您可以选择df2[['a',b']]=df['a',b']]的多个列。如果仍然出现错误,您可以添加创建数据帧“df”的代码吗?我刚刚读了一个csv文件。data=pd.read\u csv(“自闭症筛查.csv”)。然后我编码df2=pd.DataFrame(数据,列=['a','b',…]),并在一些列中取NaN。我也尝试了df2[['a',b']]=df[['a',b']],但我有一个错误。因此,如果您运行上面的代码或@think Mathematics中的代码,它也会抛出错误,或者仅当您在自己的数据帧上使用它时才会抛出错误?我也尝试过。在这个错误中,我接受一个键错误。另外,我想使用旧df中的几个列。正如@Baume在他的回答中所指出的,您可以选择df2[['a',b']]=df['a',b']]的多个列。如果仍然出现错误,您可以添加创建数据帧“df”的代码吗?我刚刚读了一个csv文件。data=pd.read\u csv(“自闭症筛查.csv”)。然后我编码df2=pd.DataFrame(数据,列=['a','b',…]),并在一些列中取NaN。我也试过df2[['a',b']]=df[['a',b']],但我有一个错误。因此,如果你运行上面的代码或@think Mathematics中的代码,它也会抛出一个错误,或者只有在你自己的数据帧上使用它时才会抛出一个错误?我使用的正是你提出的第一种方法。我又犯了一个错误,``KeyError:['a']不在索引中。这个语法有什么问题?它可以工作,但是'a'列变成了NaN.df2=pd.DataFrame(df,columns=['a'])您可以编辑您所关心的您是如何创建
df
DataFrame的吗。我已经更新了我的答案,以表明我得到了你提到的输出。我从你下面的评论中读到的内容,你正在读一个
csv文件
,因此每当你做
pd.read\u csv
时,它会创建一个数据帧,因此你的变量
data
本身就是一个数据帧,你不需要再做pd.DataFrame(data)`againgreat,按照SO惯例,接受对你问题有帮助的答案,我使用的正是你提出的第一种方式。我又犯了一个错误,``KeyError:['a']不在索引中。这个语法有什么问题?它可以工作,但是'a'列变成了NaN.df2=pd.DataFrame(df,columns=['a'])您可以编辑您所关心的您是如何创建
df
DataFrame的吗。我已经更新了我的答案,以表明我得到了你提到的输出。我从你下面的评论中读到的内容,你正在读一个
csv文件
,因此每当你做
pd.read\u csv
时,它会创建一个数据帧,因此你的变量
data
本身就是一个数据帧,你不需要再做pd.DataFrame(data)`againgreat,按照SO惯例,接受对您的问题有帮助的答案