Việc thêm hay sửa giá trị, trong pandas gọi là "setting".
Tạo DataFrame
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: indexes = pd.Series(pd.date_range('20170106', periods=5))
In [4]: indexes
Out[4]:
0 2017-01-06
1 2017-01-07
2 2017-01-08
3 2017-01-09
4 2017-01-10
dtype: datetime64[ns]
In [5]: df = pd.DataFrame(np.random.randn(5, 4), indexes, columns=list('ABCD'))
In [6]: df
Out[6]:
A B C D
2017-01-06 1.055670 -1.381857 0.023099 -1.848228
2017-01-07 0.192066 -0.255177 1.325126 1.490978
2017-01-08 -0.288918 -0.184494 -0.097952 0.067526
2017-01-09 0.508677 -1.017638 -0.324527 -0.071968
2017-01-10 0.478519 -0.904286 -0.458511 -0.591687
Tạo một cột cùng index như bảng và thêm vào bảng ở vị trí cột E (Setting a new column)
In [7]: s1 = pd.Series([1,2,3,5,9], index=indexes)
In [8]: s1
Out[8]:
2017-01-06 1
2017-01-07 2
2017-01-08 3
2017-01-09 5
2017-01-10 9
dtype: int64
In [9]: df['E'] = s1
In [10]: df
Out[10]:
A B C D E
2017-01-06 1.055670 -1.381857 0.023099 -1.848228 1
2017-01-07 0.192066 -0.255177 1.325126 1.490978 2
2017-01-08 -0.288918 -0.184494 -0.097952 0.067526 3
2017-01-09 0.508677 -1.017638 -0.324527 -0.071968 5
2017-01-10 0.478519 -0.904286 -0.458511 -0.591687 9
Sửa giá trị từng ô trong bảng (setting value)
# Bằng label
In [18]: df.at[indexes[2], 'C'] = 33
# Bằng position
In [21]: df.iat[1, 1] = 22
In [22]: df
Out[22]:
A B C D E
2017-01-06 1.055670 -1.381857 0.023099 -1.848228 1
2017-01-07 0.192066 22.000000 1.325126 1.490978 2
2017-01-08 -0.288918 -0.184494 33.000000 0.067526 3
2017-01-09 0.508677 -1.017638 -0.324527 -0.071968 5
2017-01-10 0.478519 -0.904286 -0.458511 -0.591687 9
Đảo dấu cả bảng
In [33]: df = -df
In [34]: df
Out[34]:
A B C D E
2017-01-06 -1.055670 1.381857 -0.023099 1.848228 -1.0
2017-01-07 -0.192066 -22.000000 -1.325126 -1.490978 -2.0
2017-01-08 0.288918 0.184494 -33.000000 -0.067526 -3.0
2017-01-09 -0.508677 1.017638 0.324527 0.071968 -5.0
2017-01-10 -0.478519 0.904286 0.458511 0.591687 -9.0
Copy dòng cuối cùng, thêm một dòng nữa vào bảng
In [35]: s = df.iloc[-1]In [43]: df = df.append(s) # append RETURNs new DataFrame, not like list.append() returns None
In [44]: df
Out[44]:
A B C D E
2017-01-06 -1.055670 1.381857 -0.023099 1.848228 -1.0
2017-01-07 -0.192066 -22.000000 -1.325126 -1.490978 -2.0
2017-01-08 0.288918 0.184494 -33.000000 -0.067526 -3.0
2017-01-09 -0.508677 1.017638 0.324527 0.071968 -5.0
2017-01-10 -0.478519 3.000000 0.458511 0.591687 -9.0
2017-01-10 -0.478519 3.000000 0.458511 0.591687 -9.0
Hết.
Ngắn vậy thôi, nhưng trăm hay ko bằng quay quen 🤑
Tham khảo: http://pandas.pydata.org/pandas-docs/stable/10min.html
HVN at http://www.familug.org/ and http://pymi.vn
No comments:
Post a Comment