【问题标题】:Pandas create the new columns based on the distinct column vlauesPandas 根据不同的列值创建新列
【发布时间】:2021-06-04 17:41:44
【问题描述】:

我有一个数据框,其中包含三列:

  • 模块
  • FW_Version
  • Óv_Name

其中module 列具有三个不同的值,每个值都有其FW_Version和ÒV_name`

我期待为这三个不同的值创建一个新列,并在其下方打印FW_Version,但应与 ÒV_name` 对齐,如预期输出所示。

数据帧:

import pandas as pd
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('expand_frame_repr', True)
#################################################################

df = pd.read_csv("InterconnectsReport_New.csv")
df = df.rename(columns={'Product Name': 'Modules',  'Firmware Version': 'FW_Version', 'Appliance': 'Óv_Name' })

df = df.drop(['Device Name', 'Enclosure'], axis=1)
#print(df['Modules'].unique())
print(df)

                                           Modules  FW_Version                       Óv_Name
0            Synergy 20Gb Interconnect Link Module        1.17                        ov1001
1            Synergy 20Gb Interconnect Link Module        1.17                        ov1001
2            Synergy 20Gb Interconnect Link Module        1.17                        ov1001
3    Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov1001
4    Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov1001
5            Synergy 20Gb Interconnect Link Module        1.17                        ov1001
6            Synergy 20Gb Interconnect Link Module        1.17                        ov1002
7            Synergy 20Gb Interconnect Link Module        1.17                        ov1002
8            Synergy 20Gb Interconnect Link Module        1.17                        ov1002
9    Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov1002
10   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov1002
11           Synergy 20Gb Interconnect Link Module        1.17                        ov1002
18           Synergy 20Gb Interconnect Link Module        1.18                        ov1004
19           Synergy 20Gb Interconnect Link Module        1.18                        ov1004
20           Synergy 20Gb Interconnect Link Module        1.18                        ov1004
21   Virtual Connect SE 40Gb F8 Module for Synergy  1.5.0.1004                        ov1004
22   Virtual Connect SE 40Gb F8 Module for Synergy  1.5.0.1004                        ov1004
23           Synergy 20Gb Interconnect Link Module        1.18                        ov1004
30           Synergy 20Gb Interconnect Link Module        1.18                        ov1006
31           Synergy 20Gb Interconnect Link Module        1.18                        ov1006
32           Synergy 20Gb Interconnect Link Module        1.18                        ov1006
33   Virtual Connect SE 40Gb F8 Module for Synergy  1.6.1.1002                        ov1006
34   Virtual Connect SE 40Gb F8 Module for Synergy  1.6.1.1002                        ov1006
35           Synergy 20Gb Interconnect Link Module        1.18                        ov1006
36           Synergy 20Gb Interconnect Link Module        1.17                        ov2001
37   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2001
38           Synergy 20Gb Interconnect Link Module        1.17                        ov2001
39           Synergy 20Gb Interconnect Link Module        1.17                        ov2001
40   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2001
41           Synergy 20Gb Interconnect Link Module        1.17                        ov2001
42           Synergy 20Gb Interconnect Link Module        1.17                        ov2002
43           Synergy 20Gb Interconnect Link Module        1.17                        ov2002
44           Synergy 20Gb Interconnect Link Module        1.17                        ov2002
45   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2002
46   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2002
47           Synergy 20Gb Interconnect Link Module        1.17                        ov2002
48   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2003
49           Synergy 20Gb Interconnect Link Module        1.17                        ov2003
50           Synergy 20Gb Interconnect Link Module        1.17                        ov2003
51   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2003
52           Synergy 20Gb Interconnect Link Module        1.17                        ov2003
53           Synergy 20Gb Interconnect Link Module        1.17                        ov2003
54   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2004
55           Synergy 20Gb Interconnect Link Module        1.17                        ov2004
56           Synergy 20Gb Interconnect Link Module        1.17                        ov2004
57   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2004
58           Synergy 20Gb Interconnect Link Module        1.17                        ov2004
59           Synergy 20Gb Interconnect Link Module        1.17                        ov2004
60   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2005
61           Synergy 20Gb Interconnect Link Module        1.17                        ov2005
62           Synergy 20Gb Interconnect Link Module        1.17                        ov2005
63   Virtual Connect SE 40Gb F8 Module for Synergy  1.4.2.1005                        ov2005
64           Synergy 20Gb Interconnect Link Module        1.17                        ov2005
65           Synergy 20Gb Interconnect Link Module        1.17                        ov2005

唯一值:

以下是列的三个唯一值

'Synergy 20Gb Interconnect Link Module'
 'Virtual Connect SE 40Gb F8 Module for Synergy'
 'Synergy 12Gb SAS Connection Module'

预期:

Óv_Name    Synergy 20Gb Interconnect Link Module   Virtual Connect SE 40Gb F8 Module for Synergy   Synergy 20Gb Interconnect Link Module                                   
ov1001     1.17                                    1.4.2.1005                                      1.17

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    DataFrame.drop_duplicatesDataFrame.pivot 一起使用:

    df1 = (df.drop_duplicates(subset=['Modules', 'Óv_Name'])
             .pivot('Óv_Name', 'Modules', 'FW_Version'))
    

    另一个想法,如果每个 Óv_Name, Modules 的重复值在 FW_Version 中具有相同的值,则可以使用:

    df2 = df.pivot_table(index='Óv_Name',
                         columns='Modules',
                         values='FW_Version', aggfunc='first')
    

    【讨论】:

    • 当我看到它返回 Multi-index 时,我们可以只打印所需的列,例如 'Óv_Name' 'Synergy 12Gb SAS Connection Module' 'Synergy 20Gb Interconnect Link Module' 'Virtual Connect SE 40Gb F8 Module for Synergy'
    • @kulfi - 添加df2.reset_index().rename_axis(None, axis=1)
    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 2017-04-10
    • 2018-10-07
    • 1970-01-01
    • 2022-10-13
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多