Python 将新列添加到我的数据帧会插入一个NaN值,而不是所需的值
当我尝试添加三个新列时,它们都使用NaN值而不是所需的值进行初始化。但是,如果我在初始化空数据帧之后执行一些逻辑,那么这些值不会被初始化为NaN值 这不起作用Python 将新列添加到我的数据帧会插入一个NaN值,而不是所需的值,python,pandas,Python,Pandas,当我尝试添加三个新列时,它们都使用NaN值而不是所需的值进行初始化。但是,如果我在初始化空数据帧之后执行一些逻辑,那么这些值不会被初始化为NaN值 这不起作用 auction = pandas.DataFrame() //These values initialize to NaN auction['Date'] = dataFrame['report_date'].loc[0] auction['Market Location'] = dataFrame[
auction = pandas.DataFrame()
//These values initialize to NaN
auction['Date'] = dataFrame['report_date'].loc[0]
auction['Market Location'] = dataFrame['market_location_name'].loc[0]
auction['State'] = dataFrame['market_location_state'].loc[0]
这很有效
auction = pandas.DataFrame()
for i in range(4):
//logic to initialize a few columns in auction
//These values initialize to the desired values
auction['Date'] = dataFrame['report_date'].loc[0]
auction['Market Location'] = dataFrame['market_location_name'].loc[0]
auction['State'] = dataFrame['market_location_state'].loc[0]
这没什么大不了的,因为我总是可以使用insert按所需的顺序获取列,但我不明白为什么它不能处理第一块代码。我想主要是在您称为“不工作”的情况下,问题是dataframe没有索引,只需创建列名即可使用单个值初始化列。在“case that works”中,在执行
auction['Date']=dataframe[…
之前,您的数据帧中已经有索引,在这种情况下,该值被分配给列中的每个元素。举个简单的例子:
# example
dataFrame = pd.DataFrame({'a':list('mn'),
'b':range(2)})
print (dataFrame)
a b
0 m 0
1 n 1
现在是“有效”的情况
但在“不起作用”的情况下:
对于
//在拍卖中初始化几列的逻辑,您会怎么做?
?我调用一个方法,该方法返回一个包含三列的数据帧,然后将三个新列初始化到拍卖数据帧。是的,看起来是这样的。我只是在该方法的末尾插入。
auction = pd.DataFrame()
#initialize first with an iterable: like a list or a column from another dataframe
auction['c'] = range(2) #or auction['c'] = dataFrame['b']
auction['d'] = dataFrame['a'].loc[0]
print (auction)
c d
0 0 m
1 1 m
auction = pd.DataFrame()
auction['d'] = dataFrame['a'].loc[0]
print (auction) #the result is a empty dataframe with column d
# Empty DataFrame
# Columns: [d]
# Index: []
#now add a column from an iterable
auction['c'] = range(2) #or auction['c'] = dataFrame['b']
print (auction) #the column d did not have any value so filled with nan
# d c
# 0 NaN 0
# 1 NaN 1