Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧创建返回无_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 数据帧创建返回无

Python 数据帧创建返回无,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想在从外部数据文件“ex1data1.txt”创建的熊猫数据帧的开头添加一列1。我编写了以下代码。问题是print(data)命令最终返回的是None。这个代码有什么问题?我希望data成为一个数据帧。raw_data和X0_都很好,我已经打印出来了 import numpy as np import pandas as pd raw_data = pd.read_csv('ex1data1.txt', header= None, names= ['x1','y']) X0_ = np.one

我想在从外部数据文件“ex1data1.txt”创建的熊猫数据帧的开头添加一列1。我编写了以下代码。问题是
print(data)
命令最终返回的是None。这个代码有什么问题?我希望
data
成为一个数据帧。
raw_data
X0_
都很好,我已经打印出来了

import numpy as np
import pandas as pd
raw_data = pd.read_csv('ex1data1.txt', header= None, names= ['x1','y'])
X0_ = np.ones(len(raw_data))
idx = 0
data = raw_data.insert(loc=idx, column='x0', value=X0_)
print(data)
pd.DataFrame.insert 您可以使用
pd.DataFrame.insert
,但请注意,此解决方案已就位,不需要重新分配。您可能还需要将dtype显式设置为
int

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]],
                  columns=['col1', 'col2', 'col3'])

arr = np.ones(len(df.index), dtype=int)
idx = 0
df.insert(loc=idx, column='col0', value=arr)

print(df)

   col0  col1  col2  col3
0     1     1     2     3
1     1     4     5     6
直接定义+重新排序 一个干净的解决方案是简单地添加一行并移动到数据帧开头的列。下面是一个完整的示例:

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]],
                  columns=['col1', 'col2', 'col3'])

df['col0'] = 1  # adds column to end of dataframe
cols = [df.columns[-1]] + df.columns[:-1].tolist()  # move last column to front
df = df[cols]  # apply new column ordering

print(df)

   col0  col1  col2  col3
0     1     1     2     3
1     1     4     5     6

另一种解决方案可能如下所示:

import numpy as np
import pandas as pd
raw_data = pd.read_csv('ex1data1.txt', header= None, names= ['x1','y'])

raw_data.insert(loc=0, column='x0', value=1.0)

print(raw_data)

pd.Series
在这里真的有必要吗?我认为将NumPy数组分配给一个系列是很自然的;我将从示例中删除它实际上numpy数组也不是必需的。您只需传递
value=1
,它就会广播。使用value=1将用int填充列,np数组将用float填充列;但是,如果需要浮动,那么value=1.0也可以,是的。