Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将两个数据集的两列转换为一列,保留列名和数据类型_Python - Fatal编程技术网

Python将两个数据集的两列转换为一列,保留列名和数据类型

Python将两个数据集的两列转换为一列,保留列名和数据类型,python,Python,我有两个带有保单编号的数据集: df_only 1[政策编号] df_only 2[政策编号] 我想将政策编号附加到一个数据集中:df_related_pols['policy_no'] 保留dataformat(字符串,尽管它们是数字)和列名,以便稍后使用 isin(df_related_pols['Policy_no'])。似乎您需要panda的concat来实现您想要实现的目标。这有用吗 import pandas as pd data_only1 = {'Policy_no':[100,

我有两个带有保单编号的数据集:

  • df_only 1[政策编号]
  • df_only 2[政策编号]
  • 我想将政策编号附加到一个数据集中:df_related_pols['policy_no'] 保留dataformat(字符串,尽管它们是数字)和列名,以便稍后使用
    isin(df_related_pols['Policy_no'])。

    似乎您需要panda的
    concat来实现您想要实现的目标。这有用吗

    import pandas as pd
    data_only1 = {'Policy_no':[100,101,102,103]}
    data_only2 = {'Policy_no':[110,111,112,113]}
    
    df_only1 = pd.DataFrame(data_only1)
    df_only2 = pd.DataFrame(data_only2)
    
    df_relevant_pols = pd.concat([df_only1,df_only2])
    df_relevant_pols['Policy_no'] = df_relevant_pols['Policy_no'].astype(str)
    print(df_relevant_pols)
    
    输出:

       Policy_no
    0        100
    1        101
    2        102
    3        103
    0        110
    1        111
    2        112
    3        113
    

    当然,如果您不想从两个数据帧中保留原始索引,您可以执行
    .reset_index()

    如果您只想使用它们检查
    isin(df_related_pols['Policy_no'])
    ,您可以创建一个集合,使用
    is_in()
    进行比较时比使用列表更快

    可能看起来是这样的:

    df1 = pd.DataFrame({'Policy_no':[0,1,3,6]})
    df2 = pd.DataFrame({'Policy_no':[0,2,4]})
    
    policy_numbers = set(np.append(df1.Policy_no.values, df2.Policy_no.values))
    # Result: {0, 1, 2, 3, 4, 6}
    

    然后,当您要筛选时:

    df3 = pd.DataFrame({'Policy_no':[i for i in range(10)]})
    df3[df3.Policy_no.isin(policy_numbers)]
    
       Policy_no
    0          0
    1          1
    2          2
    3          3
    4          4
    6          6
    
    请看一看,并提供一个包括样本输入、样本输出和您迄今为止尝试的代码的示例。从基本描述来看,它听起来像是一个简单的
    pd.merge