Ste*_*ell 21 python concatenation append dataframe pandas
在 pandas 1.4.0 中:append()已被弃用,文档说可以使用concat()。
FutureWarning:frame.append 方法已弃用,并将在未来版本中从 pandas 中删除。使用 pandas.concat 代替。
有问题的代码块:
def generate_features(data, num_samples, mask):
"""
The main function for generating features to train or evaluate on.
Returns a pd.DataFrame()
"""
logger.debug("Generating features, number of samples", num_samples)
features = pd.DataFrame()
for count in range(num_samples):
row, col = get_pixel_within_mask(data, mask)
input_vars = get_pixel_data(data, row, col)
features = features.append(input_vars)
print_progress(count, num_samples)
return features
Run Code Online (Sandbox Code Playgroud)
这是我尝试过但不起作用的两个选项:
features = pd.concat([features],[input_vars])
Run Code Online (Sandbox Code Playgroud)
和
pd.concat([features],[input_vars])
Run Code Online (Sandbox Code Playgroud)
这是已弃用并引发错误的行:
features = features.append(input_vars)
Run Code Online (Sandbox Code Playgroud)
小智 17
您可以将循环中生成的 DataFrame 存储在列表中,并features在完成循环后将它们连接起来。
换句话说,替换循环:
for count in range(num_samples):
# .... code to produce `input_vars`
features = features.append(input_vars) # remove this `DataFrame.append`
Run Code Online (Sandbox Code Playgroud)
与下面的一个:
tmp = [] # initialize list
for count in range(num_samples):
# .... code to produce `input_vars`
tmp.append(input_vars) # append to the list, (not DF)
features = pd.concat(tmp) # concatenate after loop
Run Code Online (Sandbox Code Playgroud)
您当然可以在循环中连接,但只执行一次会更有效。
这将“追加”空白 df 并通过使用 concat 选项防止将来出现错误
features= pd.concat([features, input_vars])
Run Code Online (Sandbox Code Playgroud)
然而,如果无法访问实际数据和数据结构,这仍然很难测试复制。
| 归档时间: |
|
| 查看次数: |
30910 次 |
| 最近记录: |