Python 循环将列中的每个值复制到 Pandas 数据框中其下方的行

问题描述 投票:0回答:2

我是 Pandas 新手,想看看是否有人可以帮助在 Python 中提供一个循环,将一行中的单元格值复制到同一列中其下方的单元格?

我尝试过制作一个 for 循环,但没有太多运气让它发挥作用。

python pandas for-loop
2个回答
0
投票

假设您有“df”并且您想要将数据帧的所有值传递到下面(您可以在它之后只选择一列)。

df = pd.DataFrame(data)

for col in df.columns:
    for i in range(len(df) - 1):
        df.at[i + 1, col] = df.at[i, col]

另一种解决方案是在pandas上使用shift方法:

df_shifted = df.shift(1)

df_concatenated = df[['column_you_want']].copy()
df_concatenated['A_shifted'] = df_shifted['column_you_want']

0
投票

您的问题并不完全清楚,但假设:

有没有办法进行此设置,以便每个奇数单元格值都放在其自身下方?本质上,第 1 行是 2,第 3 行是 4,第 5 行是 6,等等

这个输入:

df = pd.DataFrame({'col': range(7)})

#    col
# 0    0
# 1    1
# 2    2
# 3    3
# 4    4
# 5    5
# 6    6

您可以对奇数行进行切片并重新分配移位的 DataFrame(使用

loc
+
shift
):

df.loc[1::2] = df.shift(-1).loc[1::2]

或者,如果你没有 NaN,你也可以切片,然后

ffill
:

out = df.loc[::2].reindex(df.index).ffill()

输出:

   col
0    0
1    2
2    2
3    4
4    4
5    6
6    6
© www.soinside.com 2019 - 2024. All rights reserved.