Chuyển cột trong khung dữ liệu gấu trúc lên một?


88

Tôi có một khung dữ liệu gấu trúc. Tôi muốn 'tụt hậu' một trong các cột của mình. Ví dụ: có nghĩa là chuyển toàn bộ cột 'gdp' lên một, rồi xóa tất cả dữ liệu thừa ở cuối các hàng còn lại để tất cả các cột lại có độ dài bằng nhau.

df =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7

df_lag =
    y  gdp  cap
0   1    3    5
1   2    7    9
2   8    4    2
3   3    7    7

Bất kỳ cách nào để làm điều này?

Câu trả lời:


156
In [44]: df['gdp'] = df['gdp'].shift(-1)

In [45]: df
Out[45]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7
4  6  NaN    7

In [46]: df[:-1]                                                                                                                                                                                                                                                                                                               
Out[46]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7

1
Chỉ cần sử dụng df.dropna()và nó sẽ thả tất cả các hàng NaN mà bạn không cần phải chỉ định số hàng sẽ giảm.
ArmandduPlessis

8

chuyển cột gdp lên:

df.gdp = df.gdp.shift(-1)

và sau đó loại bỏ hàng cuối cùng


4

Ví dụ: để dễ dàng thay đổi 5 giá trị và cũng loại bỏ các hàng NaN mà không cần phải theo dõi số lượng giá trị bạn đã dịch chuyển theo:

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()

3
df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row

0

Đầu tiên hãy chuyển cột:

df['gdp'] = df['gdp'].shift(-1)

Thứ hai, xóa hàng cuối cùng có chứa NaN Cell:

df = df[:-1]

Lần thứ ba đặt lại chỉ mục:

df = df.reset_index(drop=True)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.