How do I change the values in a pandas column with less code?

Viewed 23

I have added a column of zeroes named 'tap' to my dataframe and I want to change the values in this column based on their location. I am able to do this but my code is somewhat long-winded, making it time consuming to change.

Is there an easier way to do this....

df.insert(0, "tap", 'inter')
df.iloc[2:100, df.columns.get_loc('tap')]=0
df.iloc[101:120, df.columns.get_loc('tap')]=1
df.iloc[201:220, df.columns.get_loc('tap')]=2
df.iloc[301:320, df.columns.get_loc('tap')]=3
df.iloc[401:420, df.columns.get_loc('tap')]=4
df.iloc[501:520, df.columns.get_loc('tap')]=5
df.iloc[601:620, df.columns.get_loc('tap')]=6
df.iloc[701:720, df.columns.get_loc('tap')]=7
df.iloc[801:820, df.columns.get_loc('tap')]=8
df.iloc[901:920, df.columns.get_loc('tap')]=9
df.iloc[1001:1020, df.columns.get_loc('tap')]=10
df.iloc[1101:1120, df.columns.get_loc('tap')]=11
df.iloc[1201:1220, df.columns.get_loc('tap')]=12
df.iloc[1301:1320, df.columns.get_loc('tap')]=13
df.iloc[1401:1420, df.columns.get_loc('tap')]=14
df.iloc[1501:1520, df.columns.get_loc('tap')]=15
df.iloc[1601:1620, df.columns.get_loc('tap')]=16
df.iloc[1701:1720, df.columns.get_loc('tap')]=17
df.iloc[1801:1820, df.columns.get_loc('tap')]=18
df.iloc[1901:1920, df.columns.get_loc('tap')]=19
df.iloc[2001:2020, df.columns.get_loc('tap')]=20
df.iloc[2101:2120, df.columns.get_loc('tap')]=21
df.iloc[2201:2220, df.columns.get_loc('tap')]=22
df.iloc[2301:2320, df.columns.get_loc('tap')]=23
df.iloc[2401:2420, df.columns.get_loc('tap')]=24
df.iloc[2501:2520, df.columns.get_loc('tap')]=25
df.iloc[2601:2620, df.columns.get_loc('tap')]=26
df.iloc[2701:2720, df.columns.get_loc('tap')]=27
df.iloc[2801:2820, df.columns.get_loc('tap')]=28
df.iloc[2901:2920, df.columns.get_loc('tap')]=29
df.iloc[3001:3020, df.columns.get_loc('tap')]=30

Thanks!

1 Answers

This code should be the same as the one you wrote.

df.insert(0, "tap", 'inter')
df.iloc[2:100, df.columns.get_loc('tap')]=0
for i in range(1, 31):
    df.iloc[10 * i + 1: 10 * i + 20, df.columns.get_loc('tap')] = i

Except for the first iloc, which for some reason is different this for loop does all the assignments as you wanted them.

Related