我需要在列和行之间进行操作。我在“ for”循环中开发了一些代码库。我知道使用数据框操作(panda)可能会更好,我尝试了其他方法,但是没有用。也许你可以帮我。
for i in range(1, len(df)):
if i == 1:
df['A'][i] = df['D'][i]
elif df['B'][i] == 1:
df['A'][i] = df['A'].shift()[i] + df['C'][i]
elif df['B'][i] == 0:
df['A'][i] = df['A'].shift()[i]
来源:
Date B D X C A
2004-03-03 0.0 1122 59 0.0 0.0
2004-03-03 0.0 1151 59 0.0 0.0
2004-03-04 0.0 1154 68 0.0 0.0
2004-03-05 0.0 1156 72 0.0 0.0
2004-03-08 0.0 1147 38 0.0 0.0
2004-03-09 0.0 1140 27 0.0 0.0
2004-03-10 0.0 1123 13 0.0 0.0
2004-03-11 0.0 1106 8 0.0 0.0
2004-03-12 1.0 1120 36 14 0.0
2004-03-15 1.0 1104 24 -16 0.0
2004-03-16 1.0 1110 35 6 0.0
2004-03-17 1.0 1123 53 13 0.0
结果:
Date B D X C A
2004-03-02 0.0 1122 59 0.0 1122
2004-03-03 0.0 1151 59 0.0 1122
2004-03-04 0.0 1154 68 0.0 1122
2004-03-05 0.0 1156 72 0.0 1122
2004-03-08 0.0 1147 38 0.0 1122
2004-03-09 0.0 1140 27 0.0 1122
2004-03-10 0.0 1123 13 0.0 1122
2004-03-11 0.0 1106 8 0.0 1122
2004-03-12 1.0 1120 36 14 1135
2004-03-15 1.0 1104 24 -16 1118
2004-03-16 1.0 1110 35 6 1124
2004-03-17 1.0 1123 53 13 1137
答案 0 :(得分:0)
您可以做类似
的操作df[A] = (df['A'] == 1) * (df['A'].shift() + df['C']) + df['A'].shift()[i] + (df['A'] == 0)
df['A'][0] = df['D'][1]
它不会使用循环,但是我认为它会更快。我将i = 1
替换为i = 0
,因为在熊猫数据框中建立索引是从0开始而不是1