Как я могу заполнить покоящиеся числовые значения в столбце pandas dataframe в python и поставить их в качестве индекса? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть такой кадр данных:

+------+------+------+
| index| ATR2 | ATR3 |
+------+------+------+
| 1    |  1   |  2   |
+------+------+------+
| 2    |  3   |  10  |
+------+------+------+
| 3    |  4   |  5   |
+------+------+------+
| 4    |  6   |  6   |
+------+------+------+
| 5    |  7   |  2   |
+------+------+------+
| 6    |  10  |  5   |
+------+------+------+

Я хочу добавить строки, чтобы получить значения покоя, и поместить столбец в качестве индекса, чтобы получить следующий кадр данных:

+------+------+
| ATR2 | ATR3 |
+------+------+
|  1   |  2   |
+------+------+
|  2   |  0   |
+------+------+
|  3   |  10  |
+------+------+
|  4   |  5   |
+------+------+
|  5   |  0   |
+------+------+
|  6   |  6   |
+------+------+
|  7   |  2   |
+------+------+
|  8   |  0   |
+------+------+
|  9   |  0   |
+------+------+
|  10  |  5   |
+------+------+

Как я могу это сделать?

1 Ответ

0 голосов
/ 13 сентября 2018

Используйте DataFrame.reindex, если все значения уникальны в столбце ATR2:

a = np.arange(df['ATR2'].min(), df['ATR2'].max() + 1)
df = df.set_index('ATR2').reindex(a, fill_value=0).reset_index()
print (df)
   ATR2  ATR3
0     1     2
1     2     0
2     3    10
3     4     5
4     5     0
5     6     6
6     7     2
7     8     0
8     9     0
9    10     5

Если значения не являются уникальными, можно использовать merge с левым соединением помощником DataFrame, созданным np.arange:

print (df)
   ATR2  ATR3
1     1     2
2     3    10
3     4     5
4     6     6
5     7     2
6    10     5
7     1     8

df1 = pd.DataFrame({'ATR2':np.arange(df['ATR2'].min(), df['ATR2'].max() + 1)})

df = df1.merge(df, how='left').fillna(0)
print (df)
    ATR2  ATR3
0      1   2.0
1      1   8.0
2      2   0.0
3      3  10.0
4      4   5.0
5      5   0.0
6      6   6.0
7      7   2.0
8      8   0.0
9      9   0.0
10    10   5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...