如果我在一个不存在该键的帧上执行df.update(),那么我可以添加它的最简洁方法是什么?
类似的东西:
try:
df.update(new_data)
except:
df.insert(new_data)
答案 0 :(得分:1)
您可以使用:
df['new_column_name'] = new data
它将更新您的列,如果没有此类列,则创建新列。
如果仍然要处理没有列的情况,则尝试更新-您可以使用:
if new_column_name in df.columns:
do_something()
else:
do_something_else()
最后-如果您需要在DataFrame中的某个特定位置插入新列,则可以使用以下内容:
if new_column_name in df.columns:
df['new_column_name'] = new data
else:
df.insert(place_you_need_column_in, 'new_column_name', new data)
如果要遵循EAFP编码风格,则可以使用一些技巧-尝试首先插入(如果列已存在,则会返回错误):
try: # It'll be executed only if you don't already have a column with 'new_column_name' in your df
df.insert(place_you_need_column_in, 'new_column_name', new data)
else:
df['new_column_name'] = new data
答案 1 :(得分:0)
目前还不清楚这里的实际用例是什么,但首先您可以通过在列上调用in
来测试密钥是否已经存在:
In [61]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df
Out[61]:
a b c
0 -0.968358 0.666118 0.758028
1 -0.805671 -0.994780 0.624423
2 0.449329 0.768457 -0.311637
3 -0.793448 1.258319 -0.924384
4 1.698867 -0.624939 -0.167027
In [62]:
'd' in df.columns
Out[62]:
False
此外,如果列不存在,那么您可以添加它,无论它是标量值还是数组长度相同:
In [63]:
df['d'] = 10
df
Out[63]:
a b c d
0 -0.968358 0.666118 0.758028 10
1 -0.805671 -0.994780 0.624423 10
2 0.449329 0.768457 -0.311637 10
3 -0.793448 1.258319 -0.924384 10
4 1.698867 -0.624939 -0.167027 10