You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正从另一DataFrame向空DataFrame追加数据后输出为空的代码?

问题根因
  • pandas的DataFrame.append()方法不会修改原对象,仅返回拼接后的新DataFrame,你的代码没有接收该返回值,因此df2始终保持初始的空状态
  • 另外append()方法在pandas 2.0及以上版本已被官方废弃,后续版本会直接移除,不建议继续使用
修正方案

以下方案不需要单独处理多列逻辑,适配任意列数的数据集:

最优写法(性能最高)

直接生成所有需要提取的行索引,一次性筛选生成目标DataFrame,避免循环拼接带来的性能损耗:

#importing libraries
import numpy as nm
import pandas as pd
import matplotlib.pyplot as plt
data_set_X = pd.read_csv('train.csv')

df = pd.DataFrame(data_set_X)
# 生成所有目标行的索引
target_idx = []
for i in range(480, len(df), 1440):
    target_idx.extend(range(i, i+361, 10))
# 直接按索引取数,自动对齐所有列
df2 = df.loc[target_idx].reset_index(drop=True)

print(df2)

兼容原循环逻辑的写法(不推荐,仅做参考)

如果一定要沿用逐行追加的逻辑,可改用pd.concat()实现,需要先将每行数据存入临时列表最后一次性拼接:

#importing libraries
import numpy as nm
import pandas as pd
import matplotlib.pyplot as plt
data_set_X = pd.read_csv('train.csv')

df=pd.DataFrame(data_set_X)
tmp_list = []

for i in range(480,len(df),1440):
    for j in range(i, i+361, 10):
        tmp_list.append(df.loc[j])

# 一次性拼接所有数据
df2 = pd.DataFrame(tmp_list).reset_index(drop=True)
       
print(df2)

内容的提问来源于stack exchange,提问作者Shivam Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:15:07