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