python Pandas -将特定iloc处的值添加到新的 Dataframe 列中

vlju58qv  于 2022-12-28  发布在  Python
关注(0)|答案(4)|浏览(195)

我有一个包含许多列的大型 Dataframe 。
对于 Dataframe 中的每一行/索引,我做一些操作,读入一些辅助数据,等等,并得到一个新值。有没有办法把这个新值添加到正确行/索引的新列中?
我可以使用.assign来添加一个新列,但由于我是在遍历行,并且一次只为一个值生成要添加的数据(生成它相当复杂),所以当它生成时,我希望立即将它添加到 Dataframe 中,而不是等到生成了整个序列。
这不起作用,并给出一个关键错误:

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

我需要先初始化列还是什么?

62lalag4

62lalag41#

创建和填充一个只使用行号的新列有两个步骤.... a.(在这种方法中,没有使用iloc
首先,使用行号获取行索引

rowIndex = df.index[someRowNumber]

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

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

这两个步骤可以合并为一行,如下所示

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

yyyllmsg2#

如果您有一个 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]})

您可以使用.loc代替iloc,并使用行索引和列名,如df.loc[row_indexer,column_indexer]=value

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

输出:

X      Y       Z
0  1.500  1.111   3.000
1  6.777    NaN   2.333
2  2.444  8.770  10.000
3    NaN    NaN   3.000
mrphzbgm

mrphzbgm3#

如果您想将值添加到新列中的某些行,根据 Dataframe 其他单元格中的值,您可以这样做:

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

根据列"A"中的值在新列中添加值:

df.loc[df.A == 2, "C"] = 100

这将创建列"C",如果列"A"为2,则向其添加值100。
输出:

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

不必先初始化色谱柱。

but5z9lq

but5z9lq4#

您可以使用内置的Pandas功能DataFrame.at
您可以选择多个索引或单个索引和列的列表

df.at[4, 'B'] = 10

相关问题