PYTHON:将现有列拆分为多个,而不影响其他列

时间:2018-10-30 02:56:01

标签: python pandas split

我刚刚开始学习PYTHON。我试图为我的问题寻找答案,但是没有运气。

我有一个包含多列的excel文件。

例如,这就是Excel文件中的内容。

Current Data Set

,我想将文件更改为如下所示。我在Excel上使用“文本转换为列”来进行此操作(以黄色突出显示),但无法弄清楚如何使用Python进行操作而不影响其他列。

Desired outcome

非常感谢您的帮助!

最好, 泰

4 个答案:

答案 0 :(得分:1)

这应该如下所示:

data['a'], data['col2'] = data['Information'].str.split('-', 1).str
data['b'], data['col3'] = data['col2'].str.split('-', 1).str
data['c'], data['col4'] = data['col3'].str.split('-', 1).str
data['d'], data['e'] = data['col4'].str.split('-', 1).str

这可能不是有效的方法,但肯定可以。这会将col Information散布在5个不同的列中

根据有问题的更新数据更新了答案

data = pd.read_excel("/path/to/file/Example for Pygo.xlsx")
data['a'], data['col2'] = data['Information'].str.split('-', 1).str
data['b'], data['col3'] = data['col2'].str.split('-', 1).str
data['c'], data['col4'] = data['col3'].str.split('-', 1).str
data['d'], data['e'] = data['col4'].str.split('-', 1).str
data = data.drop(['Information','col2', 'col3', 'col4'], axis = 1)

答案 1 :(得分:0)

签出NULL方法。您可以传入一个参数以进行分割,在这种情况下为string.split()

string.split('-')

答案 2 :(得分:0)

一种简单的方法是使用数据框处理数据集。 1.使用将xls文件读入数据框,您可以在此处xls into dataframe

中找到详细信息
  1. 现在使用合并,lambda和split。

请在下面找到示例。

示例-仅2行

import pandas as pd

df = pd.read_excel(open('/Users/xxx/Downloads/ExampleforPygo.xlsx','rb'), sheet_name=0)
df = df.merge(df.apply(lambda row: pd.Series(row['Information'].split('-')), axis=1), left_index=True, right_index=True)

print(df)

具有单独功能的示例。

    import pandas as pd

    def splitInfomation(information):
        ret = {}
        splits = information.split('-')
        for idx, split in enumerate(splits):
            ret['split' + str(idx)] = split
        return pd.Series(ret)

    df = pd.read_excel(open('/Users/xxxx/Downloads/ExampleforPygo.xlsx','rb'), sheet_name=0)

    df = df.merge(df.apply(lambda row: splitInfomation(row['Information']), axis=1), left_index=True, right_index=True)

    print(df)

答案 3 :(得分:0)

根据给定的示例文件更新了答案,在这种情况下,数据文件为xlsx,因此您必须执行以下操作,可以使用Just str.split方法来完成工作,i也可以使用fillna,以防万一没有值时将其标记为None

使用expand=True时,拆分元素将展开为单独的列。

>>> import pandas as pd
>>> pd.set_option('display.height',     None)
>>> pd.set_option('display.max_rows',   None)
>>> pd.set_option('display.max_columns',None)
>>> pd.set_option('display.width',      None)


>>> data_xls = pd.read_excel("Example_data.xlsx", index_col=None).fillna('')
>>> data_xls['Information'].str.split('-', expand=True).head(30)
     0        1                    2            3                     4
0   us  EXAMPLE             article1   scrolldown            findoutnow
1   us  EXAMPLE             article1  scrollright                  None
2   us  EXAMPLE             article1   findoutnow                  None
3   us  EXAMPLE   payablesmanagement   findoutnow                  None
4   us  EXAMPLE  strategicpurchasing  scrollright                  None
5   us  EXAMPLE             article1    learnmore         profitmargins
6   us  EXAMPLE   payablesmanagement  scrollright                  None
7   us  EXAMPLE             article2  scrollright                  None
8   us  EXAMPLE  controlandvisibilty   findoutnow                  None
9   us  EXAMPLE             article1   scrollleft                  None
10  us  EXAMPLE             homepage     amexlogo                  None
11  us  EXAMPLE        profitmargins   findoutnow                  None
12  us  EXAMPLE             article3   findoutnow                  None
13  us  EXAMPLE             article1    learnmore    payablesmanagement
14  us  EXAMPLE             article2   scrollleft                  None
15  us  EXAMPLE             article3  scrollright                  None
16  us  EXAMPLE             homepage     readmore    payablesmanagement
17  us  EXAMPLE             article1         None                  None
18  us  EXAMPLE             homepage      homenav            findoutnow
19  us  EXAMPLE  controlandvisibilty  scrollright                  None
20  us  EXAMPLE             homepage      homenav    payablesmanagement
21  us  EXAMPLE             homepage       scroll            findoutnow
22  us  EXAMPLE             article3   scrollleft                  None
23  us  EXAMPLE             article1    learnmore   strategicpurchasing
24  us  EXAMPLE             article1    learnmore  controlandvisibility
25  us  EXAMPLE             article1   scrolldown            findoutnow
26  us  EXAMPLE             article1  scrollright                  None
27  us  EXAMPLE             article1   findoutnow                  None
28  us  EXAMPLE   payablesmanagement   findoutnow                  None
29  us  EXAMPLE  strategicpurchasing  scrollright                  None

借用@Jon ..来获取整个数据集以及原始数据集和新数据集...

>>> data_xls.join(data_xls['Information'].str.split('-', expand=True).add_prefix('newCol_')).head()

        Date                                 Information  EXAMPLE_LinkedIn_SponsoredContent_Visits  EXAMPLE_LinkedIn_inMail_Visits  EXAMPLE_DBM_Native_Visits  EXAMPLE_SGCPB_Native_Visits  EXAMPLE_SGCBDC_Email_Visits  EXAMPLE_SGCPB_Email_Visit  \
0 2018-08-20   us-EXAMPLE-article1-scrolldown-findoutnow                                         0                               0                          0                            0                            0                          0
1 2018-08-20             us-EXAMPLE-article1-scrollright                                         0                               0                          0                            0                            0                          0
2 2018-08-20              us-EXAMPLE-article1-findoutnow                                         1                               0                          1                            0                            0                          0
3 2018-08-20    us-EXAMPLE-payablesmanagement-findoutnow                                         0                               0                          0                            0                            0                          0
4 2018-08-20  us-EXAMPLE-strategicpurchasing-scrollright                                         0                               0                          0                            0                            0                          0

   EXAMPLE_SGCBDC_Native_Visits  EXAMPLE_ConstructionDive_Email_Visit  EXAMPLE_ConstructionDive_PromotedStory_Visit  EXAMPLE_SGCPB_PromotedStory_Visit  EXAMPLE_SGCBDC_PromotedStory_Visit  EXAMPLE_ConstructionDive_Native_Visits newCol_0 newCol_1  \
0                             0                                     0                                             0                                  0                                   0                                       0       us  EXAMPLE
1                             0                                     0                                             0                                  0                                   0                                       0       us  EXAMPLE
2                             0                                     0                                             0                                  0                                   0                                       0       us  EXAMPLE
3                             0                                     0                                             0                                  0                                   0                                       0       us  EXAMPLE
4                             0                                     0                                             0                                  0                                   0                                       0       us  EXAMPLE

              newCol_2     newCol_3    newCol_4
0             article1   scrolldown  findoutnow
1             article1  scrollright        None
2             article1   findoutnow        None
3   payablesmanagement   findoutnow        None
4  strategicpurchasing  scrollright        None