求助:用Python循环实现Pandas DataFrame列值复制至下一行
将DataFrame列值复制到下一行的实现方法
优先推荐:用Pandas内置方法(高效简洁)
如果不需要强制用循环,更推荐用Pandas内置的shift()方法,比手动循环效率高得多:
import pandas as pd # 示例DataFrame df = pd.DataFrame({'目标列': [10, 20, 30, 40, 50]}) # 实现下一行等于上一行的值,第一行保留原内容 df['目标列'] = df['目标列'].shift(1).fillna(df['目标列'].iloc[0]) print(df)
输出结果:
目标列 0 10 1 10 2 20 3 30 4 40
如果你一定要用for循环实现
之前循环失败大概率是因为没正确使用Pandas的索引定位(比如链式索引导致修改失效),下面是可用的循环写法:
import pandas as pd df = pd.DataFrame({'目标列': [10, 20, 30, 40, 50]}) # 遍历从第0行到倒数第二行,把当前行的值赋值给下一行 for i in range(len(df) - 1): # 用loc精准定位单元格,确保修改作用在原DataFrame上 df.loc[i+1, '目标列'] = df.loc[i, '目标列'] print(df)
这段代码会得到和内置方法完全一致的结果,核心是用df[row, col]的定位方式,避免修改视图而非原数据的问题。
内容的提问来源于stack exchange,提问作者user23666463
相关产品推荐
相关产品推荐

