PANDAS-在特定ILOC上添加值,将其添加到新的DataFrame列中



我有一个包含许多列的大数据框架。

对于DataFrame中的每个行/索引,我进行了一些操作,在某些辅助ATA等中阅读并获得新值。有没有办法将新值添加到正确的行/索引的新列中?

我可以使用.ASSIGN添加一个新列,但是当我在行上循环并仅生成一个数据以一次添加一个值的数据(生成它很涉及)。生成时,我想立即将其添加到数据框架中,而不是等到我生成整个系列。

这不起作用并给出关键错误:

df['new_column_name'].iloc[this_row]=value

我需要先初始化列还是其他?

有两个步骤可以创建&仅使用一个行号填充新列...(在这种方法中

首先,使用行号

获得行索引
rowIndex = df.index[someRowNumber]

然后,使用 loc 函数一起引用特定行并添加新列/值

df.loc[rowIndex, 'New Column Title'] = "some value"

这两个步骤可以组合成一行,如下所示

df.loc[df.index[someRowNumber], 'New Column Title'] = "some value"

如果您有

之类的dataframe
import pandas as pd
df = pd.DataFrame(data={'X': [1.5, 6.777, 2.444, pd.np.NaN], 'Y': [1.111, pd.np.NaN, 8.77, pd.np.NaN], 'Z': [5.0, 2.333, 10, 6.6666]})

而不是ILOC,您可以将.loc与行索引和列名一起使用,例如df.loc[row_indexer,column_indexer]=value

df.loc[[0,3],'Z'] = 3

输出:

       X Y Z0 1.500 1.111 3.0001 6.777 Nan 2.3332 2.444 8.770 10.0003 Nan Nan 3.000

如果要在新列中的某些行中添加值,具体取决于数据帧的其他单元格中的值,则可以这样做:

import pandas as pd
df = pd.DataFrame(data={"A":[1,1,2,2], "B":[1,2,3,4]})

根据Cloumn中的值" a:

"中的值添加新列中的值
df.loc[df.A == 2, "C"] = 100

这将创建" c&quot"列。并将值100添加到其上,如果列" a"是2。

输出:

   A  B  C
0  1  1  NaN
1  1  2  NaN
2  2  3  100
3  2  4  100

不必先初始化列。

您只需使用函数dataframe.at

内置的pandas

您可以在多个索引或单个索引和列

上选择列表
df.at[4, 'B'] = 10

最新更新