如何在python中向dataframe添加一个新列,并在其中为d/f行插入d/f值?

2024-10-03 11:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有以下数据帧(df1):

          ID       Date      Time     XYZ
0        GP3   2016-01-08  16:00:00    64   
1        GP2   2016-01-08  16:00:00   557   
2        GP4   2016-01-08  16:00:00   747   
3        GP1   2016-01-08  16:00:00   406   
4        EP3   2016-01-08  16:00:00    64   

我想在其中添加另一列'ABC',具有d/f值(根据dataframe中的'ID',从另一个字典(dict1)中提取)

          ID       Date      Time      XYZ     ABC
0        GP3   2016-01-08  16:00:00     64      23
1        GP2   2016-01-08  16:00:00    557      45
2        GP4   2016-01-08  16:00:00    747      56
3        GP1   2016-01-08  16:00:00    406      89
4        EP3   2016-01-08  16:00:00     64      14

我试着做到:

df1["ABC"]=[0]*df1.shape[0]
for i in df1.iterrows():
   i[1][4]  = dict1[i[1][0]]   # dict1[i[1][0]] gives the desired int values

但是,我无法更新数据帧中“ABC”的值。他们都是0。如何更新所有值? 格言1:

dict1={'GP1':89,'GP2':45,'GP3':23,'GP4':56,'EP3':14}

Tags: 数据iddataframedate字典timedf1abc
1条回答
网友
1楼 · 发布于 2024-10-03 11:23:57

使用^{}方法:

df1['ABC'] = df1['ID'].map(dict1)

df1
Out[7]: 
    ID       Date      Time  XYZ  ABC
0  GP3 2016-01-08  16:00:00   64   23
1  GP2 2016-01-08  16:00:00  557   45
2  GP4 2016-01-08  16:00:00  747   56
3  GP1 2016-01-08  16:00:00  406   89
4  EP3 2016-01-08  16:00:00   64   14

如果ID系列中有额外的元素,它将返回NaN。如果要用默认值更改它们,可以在末尾使用.fillna(0)。如果您想要ID系列的原始值,请改用.fillna(df1['ID'])。你知道吗

相关问题 更多 >