Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-将特定iloc处的值添加到新的dataframe列中_Python_Pandas_Numpy - Fatal编程技术网

Python Pandas-将特定iloc处的值添加到新的dataframe列中

Python Pandas-将特定iloc处的值添加到新的dataframe列中,python,pandas,numpy,Python,Pandas,Numpy,我有一个包含许多列的大型数据框 对于数据帧中的每一行/索引,我都执行一些操作,读入一些辅助ata,等等,然后获得一个新值。是否有方法将该新值添加到正确行/索引处的新列中 我可以使用.assign添加一个新列,但因为我在行上循环,一次只为一个值生成要添加的数据(生成它非常复杂)。当它生成时,我希望立即将其添加到数据帧中,而不是等到生成整个系列 这不起作用,并给出一个关键错误: df['new_column_name'].iloc[this_row]=value 我需要先初始化列还是什么?如果您有

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

对于数据帧中的每一行/索引,我都执行一些操作,读入一些辅助ata,等等,然后获得一个新值。是否有方法将该新值添加到正确行/索引处的新列中

我可以使用.assign添加一个新列,但因为我在行上循环,一次只为一个值生成要添加的数据(生成它非常复杂)。当它生成时,我希望立即将其添加到数据帧中,而不是等到生成整个系列

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

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

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

如果您有类似的数据帧

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\u indexer,column\u 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
   A  B  C
0  1  1  NaN
1  1  2  NaN
2  2  3  100
3  2  4  100
X Y Z 0 1.500 1.111 3.000 1 6.777南2.333 2 2.444 8.770 10.000 3楠楠3.000
仅使用行号创建和填充新列需要两个步骤。。。 (在这种方法中,不使用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"

您可以只使用内置函数DataFrame.at

您可以选择sevral索引上的列表,也可以选择单个索引和列


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

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

import pandas as pd
df = pd.DataFrame(data={"A":[1,1,2,2], "B":[1,2,3,4]})
根据cloumn“a”中的值在新列中添加值:

这将创建列“C”,如果列“A”为2,则将值100相加

输出:

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
   A  B  C
0  1  1  NaN
1  1  2  NaN
2  2  3  100
3  2  4  100

不必首先初始化列。

如果提供要执行的操作、数据帧片段和预期输出,回答起来会容易得多。该操作相当复杂,需要读取和操作各种数据集,最终生成一个数字。我想将该数字添加到现有数据框的正确行中。这对于我遇到的一个问题非常有效。好的解决方案这只起作用,因为数据帧的索引是行号的通用“计数器”。如果您已经命名了行,例如使用时间戳或简单字符串,那么它将不起作用。这个比较长,但是涵盖了这个案子。我使用您提到的步骤在csv中的特定行和列中添加值,但它不在csv中写入。只写入最后一行。你能修改一下这个答案吗?@sheharbano这个问题涉及熊猫数据帧,而不是csv文件。您可以将csv导入pandas数据框,使用上面的说明进行更改,然后写回csv