我正在尝试向数据框添加新列。我有一列日期,我将它转换为秒 - 自 - 纪元,并将其添加到数据框的新列
def addEpochTime(df):
df[7] = np.NaN # Adding empty column.
for n in range(0, len(df)): # Writing to empty column.
df[7][n] = df[0][n] - 5 # Conduct some mathematical mutations...
addEpochTime(df)
我上面写的内容有效,但我收到错误,即:SettingWithCopyWarning
我的问题是,如何在数据框中添加新列并向其写入数据
尽管已经在pandas文档中阅读了数据框,但我并不完全理解数据框的索引方式。
答案 0 :(得分:1)
因为你说 -
我有一列日期,我将其转换为秒 - 自 - 纪元并将其添加到数据框的新列
如果你实际做的事情很简单 - df[7][n] = df[0][n] -5
,那么你可以简单地使用series.apply
方法做同样的事情,在你的情况下 -
def addEpochTime(df):
df[7] = df[0].apply(lambda x: x-5)
.apply
方法接受一个函数作为参数,它传递每一行的值,它应该在应用逻辑后返回值。
您还可以传入一个接受日期作为参数的函数,并将自纪元以来的秒数返回.apply()
,这可能就是您要查找的内容。
示例 -
In [4]: df = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])
In [5]: df
Out[5]:
A B
0 1 2
1 3 4
In [6]: df['C'] = df['A'].apply(lambda x: x-5)
In [7]: df
Out[7]:
A B C
0 1 2 -4
1 3 4 -2
答案 1 :(得分:0)
您可以在一行中执行此操作并避免警告:
df
>> a
0 1
1 2
df['b'] = df['a'] - 5
df
>> a b
0 1 -4
1 2 -3