我刚刚开始学习PYTHON。我试图为我的问题寻找答案,但是没有运气。
我有一个包含多列的excel文件。
例如,这就是Excel文件中的内容。
,我想将文件更改为如下所示。我在Excel上使用“文本转换为列”来进行此操作(以黄色突出显示),但无法弄清楚如何使用Python进行操作而不影响其他列。
非常感谢您的帮助!
最好, 泰
答案 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
中找到详细信息请在下面找到示例。
示例-仅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