[英]Pandas - add value at specific iloc into new dataframe column
我有一个包含大量列的大型数据框。
对于数据帧中的每一行/索引,我执行一些操作,读取一些辅助数据等并获得一个新值。 有没有办法将该新值添加到正确行/索引处的新列中?
我可以使用 .assign 添加一个新列,但是当我遍历行并且一次只生成要添加一个值的数据时(生成它非常复杂)。 当它生成时,我想立即将它添加到数据框中,而不是等到我生成了整个系列。
这不起作用并给出一个关键错误:
df['new_column_name'].iloc[this_row]=value
我需要先初始化列吗?
仅使用行号创建和填充新列有两个步骤......(在这种方法中不使用iloc )
首先,通过行号获取行索引值
rowIndex = df.index[someRowNumber]
然后,使用带有loc函数的行索引来引用特定行并添加新列/值
df.loc[rowIndex, 'New Column Title'] = "some value"
这两个步骤可以合并为一行,如下所示
df.loc[df.index[someRowNumber], 'New Column Title'] = "some 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_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
如果要向新列中的某些行添加值,根据数据框其他单元格中的值,您可以这样做:
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
如果列“A”为 2,这将创建列“C”并将值 100 添加到它。
输出:
A B C
0 1 1 NaN
1 1 2 NaN
2 2 3 100
3 2 4 100
没有必要先初始化列。
您可以只使用内置在函数 DataFrame.at 中的熊猫
您可以选择几个索引列表或单个索引和列
df.at[4, 'B'] = 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.