我是 Pandas 新手,想看看是否有人可以帮助在 Python 中提供一个循环,将一行中的单元格值复制到同一列中其下方的单元格?
我尝试过制作一个 for 循环,但没有太多运气让它发挥作用。
假设您有“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']
您的问题并不完全清楚,但假设:
有没有办法进行此设置,以便每个奇数单元格值都放在其自身下方?本质上,第 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]
ffill
:
out = df.loc[::2].reindex(df.index).ffill()
输出:
col
0 0
1 2
2 2
3 4
4 4
5 6
6 6