我们需要的所有信息可能记录在单独的文件和数据帧中。例如,可能有一个公司信息单独表和股票价格表,数据被分成独立的表格以减少冗余信息。
连接
- 添加行
4-1.py
import pandas as pddf1 = pd.read_csv('data/concat_1.csv')df2 = pd.read_csv('data/concat_2.csv')df3 = pd.read_csv('data/concat_3.csv')print(df1)print(df2)print(df3)row_concat = pd.concat([df1, df2, df3])print(row_concat)print(row_concat.iloc[3, ])new_row_series = pd.Series(['n1', 'n2', 'n3', 'n4'])print(pd.concat([df1, new_row_series]))new_row_df = pd.DataFrame([['n1', 'n2', 'n3', 'n4']], columns=['A', 'B', 'C', 'D'])print(new_row_df)print(pd.concat([df1, new_row_df]))print(df1.append(df2))print(df1.append(new_row_df))data_dict = {'A': 'n1', 'B': 'n2', 'C': 'n3', 'D': 'n4'}print(df1.append(data_dict, ignore_index=True))row_concat_i = pd.concat([df1, df2, df3], ignore_index=True)print(row_concat_i)
执行结果
$ python3 4-1.py A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d3 A B C D0 a4 b4 c4 d41 a5 b5 c5 d52 a6 b6 c6 d63 a7 b7 c7 d7 A B C D0 a8 b8 c8 d81 a9 b9 c9 d92 a10 b10 c10 d103 a11 b11 c11 d11 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d30 a4 b4 c4 d41 a5 b5 c5 d52 a6 b6 c6 d63 a7 b7 c7 d70 a8 b8 c8 d81 a9 b9 c9 d92 a10 b10 c10 d103 a11 b11 c11 d11A a3B b3C c3D d3Name: 3, dtype: object A B C D 00 a0 b0 c0 d0 NaN1 a1 b1 c1 d1 NaN2 a2 b2 c2 d2 NaN3 a3 b3 c3 d3 NaN0 NaN NaN NaN NaN n11 NaN NaN NaN NaN n22 NaN NaN NaN NaN n33 NaN NaN NaN NaN n4 A B C D0 n1 n2 n3 n4 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d30 n1 n2 n3 n4 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d30 a4 b4 c4 d41 a5 b5 c5 d52 a6 b6 c6 d63 a7 b7 c7 d7 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d30 n1 n2 n3 n4 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d34 n1 n2 n3 n4 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d34 a4 b4 c4 d45 a5 b5 c5 d56 a6 b6 c6 d67 a7 b7 c7 d78 a8 b8 c8 d89 a9 b9 c9 d910 a10 b10 c10 d1011 a11 b11 c11 d11
- 添加列
4-2.py
In [1]: from numpy import NaN, NAN, nanIn [2]: print(NaN == True, NaN == False, NaN == 0, NaN == '', sep='|')False|False|False|FalseIn [3]: print(NaN == NaN, NaN == nan, NaN == NAN, nan == NAN, sep='|')False|False|False|FalseIn [4]: import pandas as pdIn [5]: print(pd.isnull(NaN), pd.isnull(nan), pd.isnull(NAN), sep='|')True|True|TrueIn [6]: print(pd.notnull(NaN), pd.notnull(99), pd.notnull("https://china-testing.github.io"), sep='|')False|True|True
执行结果
$ python3 4-2.py A B C D A B C D A B C D0 a0 b0 c0 d0 a4 b4 c4 d4 a8 b8 c8 d81 a1 b1 c1 d1 a5 b5 c5 d5 a9 b9 c9 d92 a2 b2 c2 d2 a6 b6 c6 d6 a10 b10 c10 d103 a3 b3 c3 d3 a7 b7 c7 d7 a11 b11 c11 d11 A A A0 a0 a4 a81 a1 a5 a92 a2 a6 a103 a3 a7 a11 A B C D A B C D A B C D new_col_list0 a0 b0 c0 d0 a4 b4 c4 d4 a8 b8 c8 d8 n11 a1 b1 c1 d1 a5 b5 c5 d5 a9 b9 c9 d9 n22 a2 b2 c2 d2 a6 b6 c6 d6 a10 b10 c10 d10 n33 a3 b3 c3 d3 a7 b7 c7 d7 a11 b11 c11 d11 n4 A B C D A B C D A B C D new_col_list \0 a0 b0 c0 d0 a4 b4 c4 d4 a8 b8 c8 d8 n1 1 a1 b1 c1 d1 a5 b5 c5 d5 a9 b9 c9 d9 n2 2 a2 b2 c2 d2 a6 b6 c6 d6 a10 b10 c10 d10 n3 3 a3 b3 c3 d3 a7 b7 c7 d7 a11 b11 c11 d11 n4 new_col_series 0 n1 1 n2 2 n3 3 n4 0 1 2 3 4 5 6 7 8 9 10 110 a0 b0 c0 d0 a4 b4 c4 d4 a8 b8 c8 d81 a1 b1 c1 d1 a5 b5 c5 d5 a9 b9 c9 d92 a2 b2 c2 d2 a6 b6 c6 d6 a10 b10 c10 d103 a3 b3 c3 d3 a7 b7 c7 d7 a11 b11 c11 d11
- 合并不同区间
4-3.py
import pandas as pddf1 = pd.read_csv('data/concat_1.csv')df2 = pd.read_csv('data/concat_2.csv')df3 = pd.read_csv('data/concat_3.csv')df1.columns = ['A', 'B', 'C', 'D']df2.columns = ['E', 'F', 'G', 'H']df3.columns = ['A', 'C', 'F', 'H']print(df1)print(df2)print(df3)row_concat = pd.concat([df1, df2, df3])print(row_concat)print(pd.concat([df1, df2, df3], join='inner'))print(pd.concat([df1,df3], ignore_index=False, join='inner'))df1.index = [0, 1, 2, 3]df2.index = [4, 5, 6, 7]df3.index = [0, 2, 5, 7]print(df1)print(df2)print(df3)col_concat = pd.concat([df1, df2, df3], axis=1)print(col_concat)print(pd.concat([df1, df3], axis=1, join='inner'))
执行结果
$ python3 4-3.py A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d3 E F G H0 a4 b4 c4 d41 a5 b5 c5 d52 a6 b6 c6 d63 a7 b7 c7 d7 A C F H0 a8 b8 c8 d81 a9 b9 c9 d92 a10 b10 c10 d103 a11 b11 c11 d11 A B C D E F G H0 a0 b0 c0 d0 NaN NaN NaN NaN1 a1 b1 c1 d1 NaN NaN NaN NaN2 a2 b2 c2 d2 NaN NaN NaN NaN3 a3 b3 c3 d3 NaN NaN NaN NaN0 NaN NaN NaN NaN a4 b4 c4 d41 NaN NaN NaN NaN a5 b5 c5 d52 NaN NaN NaN NaN a6 b6 c6 d63 NaN NaN NaN NaN a7 b7 c7 d70 a8 NaN b8 NaN NaN c8 NaN d81 a9 NaN b9 NaN NaN c9 NaN d92 a10 NaN b10 NaN NaN c10 NaN d103 a11 NaN b11 NaN NaN c11 NaN d11Empty DataFrameColumns: []Index: [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3] A C0 a0 c01 a1 c12 a2 c23 a3 c30 a8 b81 a9 b92 a10 b103 a11 b11 A B C D0 a0 b0 c0 d01 a1 b1 c1 d12 a2 b2 c2 d23 a3 b3 c3 d3 E F G H4 a4 b4 c4 d45 a5 b5 c5 d56 a6 b6 c6 d67 a7 b7 c7 d7 A C F H0 a8 b8 c8 d82 a9 b9 c9 d95 a10 b10 c10 d107 a11 b11 c11 d11 A B C D E F G H A C F H0 a0 b0 c0 d0 NaN NaN NaN NaN a8 b8 c8 d81 a1 b1 c1 d1 NaN NaN NaN NaN NaN NaN NaN NaN2 a2 b2 c2 d2 NaN NaN NaN NaN a9 b9 c9 d93 a3 b3 c3 d3 NaN NaN NaN NaN NaN NaN NaN NaN4 NaN NaN NaN NaN a4 b4 c4 d4 NaN NaN NaN NaN5 NaN NaN NaN NaN a5 b5 c5 d5 a10 b10 c10 d106 NaN NaN NaN NaN a6 b6 c6 d6 NaN NaN NaN NaN7 NaN NaN NaN NaN a7 b7 c7 d7 a11 b11 c11 d11 A B C D A C F H0 a0 b0 c0 d0 a8 b8 c8 d82 a2 b2 c2 d2 a9 b9 c9 d9
合并多个数据集
4-4.py
import pandas as pdperson = pd.read_csv('data/survey_person.csv')site = pd.read_csv('data/survey_site.csv')survey = pd.read_csv('data/survey_survey.csv')visited = pd.read_csv('data/survey_visited.csv')print(person)print(site)print(survey)print(visited)visited_subset = visited.iloc[[0, 2, 6], ]o2o_merge = site.merge(visited_subset, left_on='name', right_on='site')print(o2o_merge)m2o_merge = site.merge(visited, left_on='name', right_on='site')print(m2o_merge)ps = person.merge(survey, left_on='ident', right_on='person')vs = visited.merge(survey, left_on='ident', right_on='taken')print(ps)print(vs)
执行结果
$ python3 4-4.py ident personal family0 dyer William Dyer1 pb Frank Pabodie2 lake Anderson Lake3 roe Valentina Roerich4 danforth Frank Danforth name lat long0 DR-1 -49.85 -128.571 DR-3 -47.15 -126.722 MSK-4 -48.87 -123.40 taken person quant reading0 619 dyer rad 9.821 619 dyer sal 0.132 622 dyer rad 7.803 622 dyer sal 0.094 734 pb rad 8.415 734 lake sal 0.056 734 pb temp -21.507 735 pb rad 7.228 735 NaN sal 0.069 735 NaN temp -26.0010 751 pb rad 4.3511 751 pb temp -18.5012 751 lake sal 0.1013 752 lake rad 2.1914 752 lake sal 0.0915 752 lake temp -16.0016 752 roe sal 41.6017 837 lake rad 1.4618 837 lake sal 0.2119 837 roe sal 22.5020 844 roe rad 11.25 ident site dated0 619 DR-1 1927-02-081 622 DR-1 1927-02-102 734 DR-3 1939-01-073 735 DR-3 1930-01-124 751 DR-3 1930-02-265 752 DR-3 NaN6 837 MSK-4 1932-01-147 844 DR-1 1932-03-22 name lat long ident site dated0 DR-1 -49.85 -128.57 619 DR-1 1927-02-081 DR-3 -47.15 -126.72 734 DR-3 1939-01-072 MSK-4 -48.87 -123.40 837 MSK-4 1932-01-14 name lat long ident site dated0 DR-1 -49.85 -128.57 619 DR-1 1927-02-081 DR-1 -49.85 -128.57 622 DR-1 1927-02-102 DR-1 -49.85 -128.57 844 DR-1 1932-03-223 DR-3 -47.15 -126.72 734 DR-3 1939-01-074 DR-3 -47.15 -126.72 735 DR-3 1930-01-125 DR-3 -47.15 -126.72 751 DR-3 1930-02-266 DR-3 -47.15 -126.72 752 DR-3 NaN7 MSK-4 -48.87 -123.40 837 MSK-4 1932-01-14 ident personal family taken person quant reading0 dyer William Dyer 619 dyer rad 9.821 dyer William Dyer 619 dyer sal 0.132 dyer William Dyer 622 dyer rad 7.803 dyer William Dyer 622 dyer sal 0.094 pb Frank Pabodie 734 pb rad 8.415 pb Frank Pabodie 734 pb temp -21.506 pb Frank Pabodie 735 pb rad 7.227 pb Frank Pabodie 751 pb rad 4.358 pb Frank Pabodie 751 pb temp -18.509 lake Anderson Lake 734 lake sal 0.0510 lake Anderson Lake 751 lake sal 0.1011 lake Anderson Lake 752 lake rad 2.1912 lake Anderson Lake 752 lake sal 0.0913 lake Anderson Lake 752 lake temp -16.0014 lake Anderson Lake 837 lake rad 1.4615 lake Anderson Lake 837 lake sal 0.2116 roe Valentina Roerich 752 roe sal 41.6017 roe Valentina Roerich 837 roe sal 22.5018 roe Valentina Roerich 844 roe rad 11.25 ident site dated taken person quant reading0 619 DR-1 1927-02-08 619 dyer rad 9.821 619 DR-1 1927-02-08 619 dyer sal 0.132 622 DR-1 1927-02-10 622 dyer rad 7.803 622 DR-1 1927-02-10 622 dyer sal 0.094 734 DR-3 1939-01-07 734 pb rad 8.415 734 DR-3 1939-01-07 734 lake sal 0.056 734 DR-3 1939-01-07 734 pb temp -21.507 735 DR-3 1930-01-12 735 pb rad 7.228 735 DR-3 1930-01-12 735 NaN sal 0.069 735 DR-3 1930-01-12 735 NaN temp -26.0010 751 DR-3 1930-02-26 751 pb rad 4.3511 751 DR-3 1930-02-26 751 pb temp -18.5012 751 DR-3 1930-02-26 751 lake sal 0.1013 752 DR-3 NaN 752 lake rad 2.1914 752 DR-3 NaN 752 lake sal 0.0915 752 DR-3 NaN 752 lake temp -16.0016 752 DR-3 NaN 752 roe sal 41.6017 837 MSK-4 1932-01-14 837 lake rad 1.4618 837 MSK-4 1932-01-14 837 lake sal 0.2119 837 MSK-4 1932-01-14 837 roe sal 22.5020 844 DR-1 1932-03-22 844 roe rad 11.25
参考资料
- 讨论qq群144081101 591302926 567351477 钉钉免费群21745728
- 本文最新版本地址
- 本文涉及的python测试开发库 谢谢点赞!
- 本文相关海量书籍下载
- 源码下载
- 本文英文版书籍下载