问题描述
我尝试使用现有数据框的列创建一个新数据框,但它没有按预期工作。第一个 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()
使用任何适合您的问题