DataFrame là cấu trúc dữ liệu 2 chiều, lưu dữ liệu dạng bảng, hàng và cột. Có thể hình dung như bảng SQL hoặc sheet Excel. Tạo bằng constructor:
pd.DataFrame(data, index, columns, dtype, copy)
Trước đây thấy cách tạo cột mới như Series rồi index vào DataFrame gốc. Hãy xem cách tạo cột dùng các cột đã có. Hữu ích khi cần tính toán trên cột có sẵn và lưu kết quả vào cột mới:
Ví dụ
import pandas as pd
my_data = {
'ab': pd.Series([1, 8, 7], index=['a', 'b', 'c']),
'cd': pd.Series([1, 2, 0, 9], index=['a', 'b', 'c', 'd']),
'ef': pd.Series([56, 78, 32], index=['a', 'b', 'c'])
}
my_df = pd.DataFrame(my_data)
print("DataFrame là:")
print(my_df)
my_df['gh'] = my_df['ab'] + my_df['ef']
print("Sau khi cộng cột 0 và 2 vào DataFrame:")
print(my_df)
Đầu ra
DataFrame là:
ab cd ef
a 1.0 1 56.0
b 8.0 2 78.0
c 7.0 0 32.0
d NaN 9 NaN
Sau khi cộng cột 0 và 2 vào DataFrame:
ab cd ef gh
a 1.0 1 56.0 57.0
b 8.0 2 78.0 86.0
c 7.0 0 32.0 39.0
d NaN 9 NaN NaN
Giải thích
- Nhập thư viện cần thiết, đặt bí danh để dễ dùng.
- Tạo dictionary value gồm key-value, value là Series.
- Tạo nhiều dictionary value như vậy.
- Dictionary truyền làm tham số cho
DataFrametrongpandas. - DataFrame tạo bằng cách truyền dictionary làm tham số.
- Cột mới được index vào DataFrame, cột 0 và 2 cộng tạo cột mới.
- DataFrame in ra console.
Lưu ý - 'NaN' là 'Not a Number', nghĩa là giá trị [hàng, cột] cụ thể không có entry hợp lệ. Khi cộng cột có NaN, kết quả cũng là NaN (hàng d).
Mở rộng: Có thể dùng bất kỳ phép toán vector hóa: df['new'] = df['A'] * df['B'], df['new'] = df['A'].apply(func), df.assign(new_col=lambda x: x.A + x.B) (tạo bản sao).