我正在尝试根据另一列的值更新/修改数据框的某些部分。
如果['a']
列为空,则用['b']
列的值填充['a']
列像下面这样
list_position = [[4, 35]]
df.iloc[list_position[0][0]:list_position[0][1] + 1,:]['a'] = df.iloc[list_position[0][0]:list_position[0][1] + 1,:].apply(lambda row: row['a'] * row['b'] if np.isnan(row['a']) else row['b'], axis=1)
它给出的错误为TypeError:需要一个整数
。
Traceback (most recent call last):
File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required
任何纠正该问题的建议都将受到高度赞赏。
更新1.我尝试了中建议的所有三种方法 1 个重复答案
df['Cat1'].fillna(df['Cat2'])
和
这篇文章建议了 2 个答案。
1. df['a'][df['a'].isnull()] = df['b']
2. df['a'] = df['a'].fillna(df['b'])
所有错误都与以下内容相同:
Traceback (most recent call last):
File "pandas\_libs\index.pyx", line 162, in
pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 958, in
pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required
如果我将列名称替换为列号,例如
df[7] = df[7].fillna(df[8)
不知道为什么,如果有人对此有解释。
最佳答案
我可以看到您尝试用来完成任务的逻辑,但有一种更简单的方法来完成它。
df['a'] = df['a'].fillna(df['b'])
这将使用同一索引上的 b 列中的值填充 a 列中的空值。但是,如果列 b 具有空值并且列 a 具有空值,则列 a 也将具有空值。
关于python - 根据其他列修改数据框的部分列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429499/