gpt4 book ai didi

python - 循环遍历数据框(列和行)并替换数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:33 24 4
gpt4 key购买 nike

我有:df = pd.DataFrame([[1, 2,3], [2, 4,6],[3, 6,9]], columns=['A', 'B', 'C'] )

我需要计算每行和每列的 i+1i 值之间的差异,并将其再次存储在同一列中。所需的输出将是:

Out[2]: 
A B C
0 1 2 3
1 1 2 3
2 1 2 3

我曾尝试这样做,但我最终得到了一个 append 了所有值的列表,我需要将它们单独存储(在列表中,或在同一个数据框中)。

有办法吗?


difs=[]
for column in df:
for i in range(len(df)-1):
a = df[column]
b = a[i+1]-a[i]
difs.append(b)

for x in difs:
for column in df:
df[column]=x

最佳答案

您可以使用 pandas 函数 shift 来实现您的预​​期目标。这就是它的作用(更多信息请参见 docs ):

Shift index by desired number of periods with an optional time freq.

for col in df:
df[col] = df[col] - df[col].shift(1).fillna(0)

df
Out[1]:
A B C
0 1.0 2.0 3.0
1 1.0 2.0 3.0
2 1.0 2.0 3.0

已添加

如果您想使用循环,可能一个好的方法是使用 iterrows(更多信息 here),因为它提供了 (index, Series)对。

difs = []
for i, row in df.iterrows():
if i == 0:
x = row.values.tolist() ## so we preserve the first row
else:
x = (row.values - df.loc[i-1, df.columns]).values.tolist()
difs.append(x)

difs
Out[1]:
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

## Create new / replace old dataframe
cols = [col for col in df.columns]
new_df = pd.DataFrame(difs, columns=cols)

new_df
Out[2]:
A B C
0 1.0 2.0 3.0
1 1.0 2.0 3.0
2 1.0 2.0 3.0

关于python - 循环遍历数据框(列和行)并替换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57418413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com