Hướng dẫn dùng pdjoin python

Tôi đang cố gắng nối các khung dữ liệu sau:

df1

                                price   side timestamp
timestamp           
2016-01-04 00:01:15.631331072   0.7286  2   1451865675631331
2016-01-04 00:01:15.631399936   0.7286  2   1451865675631400
2016-01-04 00:01:15.631860992   0.7286  2   1451865675631861
2016-01-04 00:01:15.631866112   0.7286  2   1451865675631866

và:

df2

                                bid     bid_size offer  offer_size
timestamp               
2016-01-04 00:00:31.331441920   0.7284  4000000 0.7285  1000000
2016-01-04 00:00:53.631324928   0.7284  4000000 0.7290  4000000
2016-01-04 00:01:03.131234048   0.7284  5000000 0.7286  4000000
2016-01-04 00:01:12.131444992   0.7285  1000000 0.7286  4000000
2016-01-04 00:01:15.631364096   0.7285  4000000 0.7290  4000000

Với

 data = pd.concat([df1,df2], axis=1)  

Nhưng tôi nhận được đầu ra follwing:

InvalidIndexError                         Traceback (most recent call last)
 in ()
----> 1 data = pd.concat([df1,df2], axis=1)
      2 data = data.fillna(method='pad')
      3 data = data.fillna(method='bfill')
      4 data['timestamp'] =  data.index.values#converting to datetime
      5 data['timestamp'] = pd.to_datetime(data['timestamp'])#converting to datetime

/usr/local/lib/python2.7/site-packages/pandas/tools/merge.pyc in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, copy)
    810                        keys=keys, levels=levels, names=names,
    811                        verify_integrity=verify_integrity,
--> 812                        copy=copy)
    813     return op.get_result()
    814 

/usr/local/lib/python2.7/site-packages/pandas/tools/merge.pyc in __init__(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity, copy)
    947         self.copy = copy
    948 
--> 949         self.new_axes = self._get_new_axes()
    950 
    951     def get_result(self):

/usr/local/lib/python2.7/site-packages/pandas/tools/merge.pyc in _get_new_axes(self)
   1013                 if i == self.axis:
   1014                     continue
-> 1015                 new_axes[i] = self._get_comb_axis(i)
   1016         else:
   1017             if len(self.join_axes) != ndim - 1:

/usr/local/lib/python2.7/site-packages/pandas/tools/merge.pyc in _get_comb_axis(self, i)
   1039                 raise TypeError("Cannot concatenate list of %s" % types)
   1040 
-> 1041         return _get_combined_index(all_indexes, intersect=self.intersect)
   1042 
   1043     def _get_concat_axis(self):

/usr/local/lib/python2.7/site-packages/pandas/core/index.pyc in _get_combined_index(indexes, intersect)
   6120             index = index.intersection(other)
   6121         return index
-> 6122     union = _union_indexes(indexes)
   6123     return _ensure_index(union)
   6124 

/usr/local/lib/python2.7/site-packages/pandas/core/index.pyc in _union_indexes(indexes)
   6149 
   6150         if hasattr(result, 'union_many'):
-> 6151             return result.union_many(indexes[1:])
   6152         else:
   6153             for other in indexes[1:]:

/usr/local/lib/python2.7/site-packages/pandas/tseries/index.pyc in union_many(self, others)
    959             else:
    960                 tz = this.tz
--> 961                 this = Index.union(this, other)
    962                 if isinstance(this, DatetimeIndex):
    963                     this.tz = tz

/usr/local/lib/python2.7/site-packages/pandas/core/index.pyc in union(self, other)
   1553                 result.extend([x for x in other._values if x not in value_set])
   1554         else:
-> 1555             indexer = self.get_indexer(other)
   1556             indexer, = (indexer == -1).nonzero()
   1557 

/usr/local/lib/python2.7/site-packages/pandas/core/index.pyc in get_indexer(self, target, method, limit, tolerance)
   1890 
   1891         if not self.is_unique:
-> 1892             raise InvalidIndexError('Reindexing only valid with uniquely'
   1893                                     ' valued Index objects')
   1894 

InvalidIndexError: Reindexing only valid with uniquely valued Index objects  

Tôi đã loại bỏ các cột bổ sung và loại bỏ các bản sao và NA nơi có thể có xung đột - nhưng tôi chỉ đơn giản là không biết có gì sai.

28 hữu ích 5 bình luận 78k xem chia sẻ

Bách khoa toàn thư mở Wikipedia

Hướng dẫn dùng pdjoin python
Trang này hiện không hoạt động và được giữ lại vì lí do tham khảo lịch sử.
Trang này không còn phù hợp hoặc sự đồng thuận về mục đích của nó đã trở nên không rõ ràng. Để hồi sinh cuộc thảo luận, hãy tìm kiếm đầu vào rộng hơn, như Trang thảo luận chung.

  • Wikipedia:DLNV

Hướng dẫn dùng pdjoin python

Dữ liệu nhân vật là siêu dữ liệu để thêm vào mục nhân vật. Siêu dữ liệu này có thể được trích ra và phân tích tự động (khác với nội dung thường ở Wikipedia). Nó bao gồm tập hợp dữ liệu chuẩn chứa thông tin cơ bản về nhân vật, thí dụ tên, ngày sinh, nơi sinh, v.v. Sau khi được phân tích, siêu dữ liệu này có thể được sử dụng trong chức năng tìm kiếm nâng cao (thí dụ ở Google), phân tích thống kê, xếp thể loại tự động, và danh sách người sinh trong mục ngày. Bảng dữ liệu nhân vật không thay đổi bài viết đối với độc giả, tại vì nó bị giấu đi theo mặc định, người dùng phải sửa tập tin định kiểu cá nhân để hiển thị bảng này.

Vào ngày 12 tháng 6 năm 2006, dự án gắn bảng dữ liệu nhân vật mới bắt đầu, nên chỉ 3.210 bài có bảng này ở Wikipedia tiếng Việt. Tuy nhiên, vào ngày 11 tháng 6, Wikipedia tiếng Anh có vào khoảng 4.000 bài được bảng này, và Wikipedia tiếng Đức có hơn 100.000 bài như vậy. Chúng ta mong là mai mốt hệ thống này sẽ thay cho tiêu bản {{Thời gian sống}} hiện có, nhưng bây giờ vẫn phải sử dụng tiêu bản đó để xếp bài vào thể loại.

Để sử dụng bảng {{Dữ liệu nhân vật}}, hãy chép mã nguồn ở dưới vào cuối mục nhân vật, chẳng hạn ngay trước các dòng thể loại và liên kết liên wiki.

{{Dữ liệu nhân vật
|TÊN=
|TÊN KHÁC=
|TÓM TẮT=
|LÚC SINH=
|NƠI SINH=
|LÚC MẤT=
|NƠI MẤT=
}}

Hoặc bằng tiếng Anh (chỉ được hỗ trợ tạm thời):

{{Persondata
|NAME=
|ALTERNATIVE NAMES=
|SHORT DESCRIPTION=
|DATE OF BIRTH=
|PLACE OF BIRTH=
|DATE OF DEATH=
|PLACE OF DEATH=
}}

Lưu ý là các tham số phải được viết bằng chữ hoa, để dễ phân tích mã nguồn hơn.

Xong thì điền các trường dữ liệu. Xin làm chắc chắn là các tên phương Tây được viết với họ đằng trước (giống khi xếp thể loại). Đừng dời những dòng không có thông tin: nếu người trong bài vẫn còn sống, xin để hai dòng trống LÚC MẤTNƠI MẤT (hay DATE OF DEATHPLACE OF DEATH). Đây là thí dụ bảng được điền chính xác:

{{Dữ liệu nhân vật
|TÊN=Magellan, Ferdinand
|TÊN KHÁC=Magalhães, Fernão de (tiếng Bồ Đào Nha); Magallanes, Fernando de (tiếng Tây Ban Nha); Magallanes, Hernando de (tiếng Tây Ban Nha)
|TÓM TẮT=nhà thám hiểm đường biển hàng hải
|LÚC SINH=mùa xuân năm [[1480]]
|NƠI SINH=[[Sabrosa]], [[Bồ Đào Nha]]
|LÚC MẤT=[[27 tháng 4]], [[1521]]
|NƠI MẤT=[[Đảo Mactan]], [[Cebu]], [[Philippines]]
}}

Bảng dữ liệu nhân vật được giấu khỏi độc giả theo mặc định. Để hiển thị nó, cần phải sửa đổi tập tin định kiểu cá nhân. Bạn phải đăng nhập trước tiên, rồi tạo ra tập tin định kiểu của bạn và cộng thêm mã nguồn ở dưới:

table.metadata {display: block;}
table.metadata {display: table;}

Nếu bạn coi được bảng ngay bên dưới về Ferdinand Magellan, bạn đã hiển thị bảng dữ liệu nhân vật.


Để giấu bảng này lại, chỉ việc dời dòng mã nguồn ở trên khỏi tập tin định kiểu.

Các trường dữ liệu TÊN, TÊN KHÁC, TÓM TẮT, LÚC SINH, NƠI SINH, LÚC MẤT, và NƠI MẤT được sử dụng để xây một hồ sơ về nhân vật. Tập hợp dữ liệu này có thể được mở rộng mai mốt:

Trường dữ liệu Thí dụ
TÊN

Magellan, Ferdinand
Bush, George Walker
Beethoven, Ludwig van
Van Zandt, Townes
Brutus của Troy
King, Martin Luther, Jr.

TÊN KHÁC

Magalhães, Fernão de (tiếng Bồ Đào Nha); Magallanes, Fernando de (tiếng Tây Ban Nha)
Clemens, Samuel Langhorne (tên thật)

TÓM TẮT

nhà thám hiểm hàng hải
nhà triết học Đức
nhà văn theo chủ nghĩa vô chính phủ
Tổng thống Hoa Kỳ thứ 39

LÚC SINH

1480
25 tháng 10, 1806
khoảng 470 TCN

NƠI SINH

Sabrosa, Bồ Đào Nha
Texas, Hoa Kỳ
Newark, New Jersey, Hoa Kỳ

LÚC MẤT

27 tháng 4, 1521
tháng 1, 1945
1421

NƠI MẤT

Đảo Mactan, Cebu, Philippines
Núi Juliet, Tennessee, Hoa Kỳ

Hiện không cần thiết các liên kết nội bộ trong bảng dữ liệu, nhưng có thể hữu ích vào tương lai. Xin đừng bắt đầu các giá trị với chữ hoa (trừ khi từ đầu tiên là danh từ riêng hay từ chữ đầu), để các chương trình ứng dụng sẽ có thể phân biệt giữa danh từ chung và danh từ riêng, chẳng hạn để bỏ các giá trị này trong câu. Tiêu bản này sẽ tự động đổi thành chữ hoa khi hiển thị bài.

Tên[sửa | sửa mã nguồn]

Khi đưa vào tên của nhân vật có tên phương Tây, sử dụng định dạng này: [họ], [tên] [các tên lót], [hậu tố]. Thường định dạng này dễ hiểu, thí dụ George W. Bush ("George Walker Bush") là "Bush, George Walker". Tuy nhiên, có lúc khi sẽ khó chọn họ. Khi không biết rõ, cố gắng nhớ cách mà một từ điển in trên giấy sẽ xếp tên này. Chẳng hạn Ludwig van Beethoven được xếp theo "Beethoven", trong khi Townes Van Zandt được xếp theo "Van Zandt". (Đây là một lý do phải đừng phân biệt chữ hoa và chữ thường trong các giá trị của bảng này.) Ngoài ra, các tên Tây Ban Nha và Mỹ Latinh thường có tên họ nhiều phần, nhưng phải xếp theo phần đầu của tên họ: Vicente Fox ("Vicente Fox Quesada") là "Fox Quesada, Vicente". Nếu bạn chưa chắc chắn về điều này, nên hỏi một người đã quen về nhân vật này hay một người quen với văn hóa đó, hoặc tra cứu một hướng dẫn danh mục như là AACR2.

Thường đưa vào tên đầy đủ của nhân vật thì tốt, để các tên giống nhau không bị mâu thuẫn. Tuy nhiên, đừng bao gồm các từ xưng hô (như là "Bác", "TS", "GS", "Dr.", "Prof.", hay "PhD"), và thường chỉ nên đưa danh hiệu vào trường TÓM TẮT (hay TÊN KHÁC nếu danh hiệu đó rất dứt khoát, thí dụ bao gồm thứ tự).

Ngày tháng[sửa | sửa mã nguồn]

Hãy đưa vào thông tin ngày tháng theo định dạng [[x tháng y]], [[zzzz]]. Xin sử dụng lịch Gregory (thay vì âm lịch hay lịch Julian). Nếu năm sinh/mất trong âm lịch có quan trọng, hãy theo định dạng [[x tháng y]], [[zzzz]] (năm [[A B]]). Nếu ngày tháng bị tranh luận, hãy bỏ dấu hỏi đằng sau như [[x tháng y]]?, [[zzzz]] (nếu ngày hay tháng bị tranh luận) hay như [[x tháng y]], [[zzzz]]? (nếu cả năm bị tranh luận).

Nếu đã đưa vào nơi sinh/mất, hãy sử dụng giờ địa phương nếu có thể; không có thì hãy sử dụng Giờ phối hợp quốc tế.

Địa danh[sửa | sửa mã nguồn]

Hãy đưa vào thông tin đầy đủ của nơi sinh và mất (nếu có), thí dụ làng Kim Liên sẽ được đưa vào là "làng Kim Liên, xã Kim Liên, huyện Nam Đàn, tỉnh Nghệ An, Việt Nam". Với những nước không bao gồm những tên cấp ("quận", "tỉnh", "bang") trong địa chỉ, không cần đưa tên cấp vào.

Giữ những địa danh của thời nhân vật. Alexandre de Rhodes mất tại "Ispahan, Ba Tư", chứ không phải "Ispahan, Iran", tại vì nước đó chưa đổi tên thành Iran vào thời của Alexandre de Rhodes.

Nếu không có định dạng chuẩn thì khó lấy thông tin hữu ích từ các mục nhân vật, và cũng không thể tự động xếp các bài nhân vật theo chữ cái, tại vì các tên phương Tây thường bắt đầu với tên cá nhân. Sau khi thêm siêu dữ liệu chuẩn vào các bài này, chúng ta có thể ứng dụng thông tin ở Wikipedia cho nhiều sản phẩm khác, như là Wikipedia trên CD-ROM, công cụ tìm kiếm chuyên về Wikipedia, v.v., và cũng có thể ứng dụng thông tin này để bổ sung các mục năm, mục ngày, và bài địa danh liên quan. Bảng này cũng có thể làm tờ phiếu để học sinh học nhanh. Mong là chức năng này chỉ là một trong nhiều bước để cải tiến Wikipedia với nội dung có ngữ nghĩa.

Trích ra dùng Python[sửa | sửa mã nguồn]

Có thể dùng khuôn khổ pywikipediabot (bằng Python) để tìm kiếm các bài dùng tiêu bản Dữ liệu nhân vật,[1] lấy nội dung,[2], và lọc thông tin giữa {{Dữ liệu nhân vật |}}.

Trích ra từ cơ sở dữ liệu SQL[sửa | sửa mã nguồn]

Dùng truy vấn SQL, có thể lọc ra dữ liệu nhân vật khỏi những bài Wikipedia được lưu giữ trong cơ sở dữ liệu. Cho thí dụ, đây là truy vấn SQL có thể dùng để trích dữ liệu nhân vật từ wikisign.org:

SELECT
   pages.cur_namespace,
   pages.cur_title,
   SUBSTRING(SUBSTRING(pages.cur_text FROM INSTR(pages.cur_text,'{{Dữ liệu nhân vật')), 1,
      INSTR(SUBSTRING(pages.cur_text FROM INSTR(pages.cur_text,'{{Dữ liệu nhân vật')),'}}')+1)
      AS 'Dữ liệu nhân vật'
FROM cur AS pd
JOIN templatelinks AS tl
   ON pd.cur_namespace = tl.tl_namespace
   AND pd.cur_title = tl.tl_title
JOIN cur AS pages
   ON tl.tl_from = pages.cur_id
   AND pages.cur_namespace = 0
WHERE pd.cur_namespace = 10
AND pd.cur_title = 'Dữ liệu nhân vật'

Để trích các bài gọi tiêu bản {{Persondata}} hay {{Personendaten}} (cả hai đổi hướng đến {{Dữ liệu nhân vật}}), đổi hai cái "Dữ liệu nhân vật" đầu tiên thành "Persondata" hay "Personendaten". Trước khi có thể sử dụng dữ liệu trong bảng này, mã nguồn phải được phân tách tiếp.