【问题标题】:How do I create a data frame and form two separate columns from these two outputs?如何创建数据框并从这两个输出中形成两个单独的列?
【发布时间】:2019-12-20 11:04:21
【问题描述】:

我正在尝试拥有一个包含以下两个输出的数据框,并排为列:

finalcust = mainorder_df, custname1_df
print(finalcust)

finalcust
Out[46]: 
(10      10103.0
 26      10104.0
 39      10105.0
 54      10106.0
 72      10107.0
          ...   
 2932    10418.0
 2941    10419.0
 2955    10420.0
 2977    10424.0
 2983    10425.0
 Name: ordernumber, Length: 213, dtype: float64,
 1                  Signal Gift Stores
 2          Australian Collectors, Co.
 3                   La Rochelle Gifts
 4                  Baane Mini Imports
 5        Mini Gifts Distributors Ltd.
                     ...              
 117      Motor Mint Distributors Inc.
 118          Signal Collectibles Ltd.
 119    Double Decker Gift Stores, Ltd
 120              Diecast Collectables
 121                 Kelly's Gift Shop
 Name: customerName, Length: 91, dtype: object)

我试过 pd.merge 但它说我不被允许,因为没有公共列。

有人知道吗?

【问题讨论】:

  • 显然它们有不同的长度(第一个有 2983 个值,第二个只有 121 个)。您打算如何将它们并排放置在数据框中?
  • 你试过pd.concat(finalcust, axis=1)吗?请注意,它通过 2 系列的 index 加入

标签: python pandas


【解决方案1】:

您实际上想要完成什么?

df.merge() 的常规合并

数据框无法合并,因为它们无论如何都不相关。 Pandas 希望它们有一个类似的列,以便知道如何合并。 pandas.DataFrame.merge docs

示例:如果您想从客户信息表中获取信息并将其添加到订单列表中。

import pandas as pd
customers = ['A', 'B', 'C', 'D']
addresses = ['Adress_A', 'Address_B', 'Address_C', 'Address_D']
df1 = pd.DataFrame({'Customer': customers,
                     'Info': addresses})
df2 = pd.DataFrame({'Customer': ['A', 'B', 'C', 'D','A','B','C','D','A','B'],
                     'Order': [1,2,3,4,5,6,7,8,9,10]})
df = df1.merge(df2)
df =

Customer    Info    Order
0   A   Adress_A    1
1   A   Adress_A    5
2   A   Adress_A    9
3   B   Address_B   2
4   B   Address_B   6
5   B   Address_B   10
6   C   Address_C   3
7   C   Address_C   7
8   D   Address_D   4
9   D   Address_D   8

结合df.concat()

如果它们的大小相同,您可以使用concat 来组合它们。有一篇关于它的帖子here

示例:将新的客户列表添加到客户 df

import pandas as pd
customers = ['A', 'B', 'C', 'D']
addresses = ['Address_A', 'Address_B', 'Address_C', 'Address_D']
new_customers = ['E', 'F', 'G', 'H']
new_addresses = ['Address_E', 'Address_F', 'Address_G', 'Address_G']
df1 = pd.DataFrame({'Customer': customers,
                     'Info': addresses})
df2 = pd.DataFrame({'Customer': new_customers,
                     'Info': new_addresses})
df = pd.concat([df1, df2])
df =
    Customer    Info
0   A   Address_A
1   B   Address_B
2   C   Address_C
3   D   Address_D
0   E   Address_E
1   F   Address_F
2   G   Address_G
3   H   Address_G

通过添加新列组合“并排”

并排的组合方法是添加一列。

示例:在客户信息 df 中添加新列。

import pandas as pd
customers = ['A', 'B', 'C', 'D']
addresses = ['Address_A', 'Address_B', 'Address_C', 'Address_D']
phones = [1,2,3,4]

df = pd.DataFrame({'Customer': customers,
                     'Info': addresses})
df['Phones'] = phones
df =
Customer    Info    Phones
0   A   Address_A   1
1   B   Address_B   2
2   C   Address_C   3
3   D   Address_D   4

实际上在做...?

如果您尝试为订单分配客户名称,则无法使用此处的数据来完成。

希望这会有所帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2021-09-27
    • 1970-01-01
    • 2018-08-22
    • 2017-06-10
    • 2018-05-08
    相关资源
    最近更新 更多