遍历数据库并遍历某些值pandas

时间:2018-09-09 23:04:15

标签: python pandas

我有一个包含以下各列的数据框。

╔════╦══════╦═════════╗
║ id ║ year ║ quarter ║
╠════╬══════╬═════════╣
║  1 ║ 2018 ║       3 ║
║  1 ║ 2018 ║       4 ║
║  2 ║ 2018 ║       1 ║
║  2 ║ 2018 ║       2 ║
║  3 ║ 2018 ║       4 ║
╚════╩══════╩═════════╝

预期的输出量:

╔════╦══════╦═════════╗
║ id ║ year ║ quarter ║
╠════╬══════╬═════════╣
║  1 ║ 2018 ║       3 ║
║  1 ║ 2018 ║       4 ║
║  1 ║ 2019 ║       1 ║
║  2 ║ 2018 ║       1 ║
║  2 ║ 2018 ║       2 ║
║  3 ║ 2018 ║       4 ║
║  3 ║ 2019 ║       1 ║
╚════╩══════╩═════════╝

我想遍历表,如果每个id的最后一个四分之一为4,我想在年份中加1,然后将四分之一定为1。这是我尝试的以下代码

for index, row in df.iterrows():
   if df['quarter'] is 4:
       df['quarter'] = 1
       df['year'] = df['year'] + 1

对熊猫和python来说还很陌生,所以如果有人有什么好建议的话。

1 个答案:

答案 0 :(得分:0)

可以建立一个新的df,建立您的逻辑,然后append

df2 = df.loc[df.quarter.eq(4)].copy()
df2['year'], df2['quarter'] = df2['year'].add(1), 1
df.append(df2).sort_values(by='id')

    id  year    quarter
0   1   2018    3
1   1   2018    4
1   1   2019    1
2   2   2018    1
3   2   2018    2
4   3   2018    4
4   3   2019    1

或者,想要一个班轮

df.append(df.loc[df.quarter.eq(4)].assign(year=df.year.add(1), quarter=1)).sort_values(by='id')