如何将字符串切成两个以创建数据框?

时间:2019-04-04 12:52:56

标签: python string

我有一个名字-姓氏组合的列表,例如:

['henry-dupuis', 'arthur-keynes', ...]

我希望能够将字符串分成两部分并创建一个数据框:

df = 

     fullname   firstname   lastname

 henry-dupuis       henry     dupuis        
arthur-keynes      arthur     keynes
...

我该怎么做?

4 个答案:

答案 0 :(得分:0)

names = ['henry-dupuis', 'arthur-keynes'...]
splitted_names = [[elem] + elem.split('-')[:2] for elem in names]
df = pd.DataFrame(splitted_names, columns=["full-name", "fist-name", "last-name"])

答案 1 :(得分:0)

代码:

df = pd.DataFrame(names, columns=['FullName']) 
df['FirstName'] = df['FullName'].apply(lambda x: x.split('-')[0])
df['LastName'] = df['FullName'].apply(lambda x: x.split('-')[1])

结果:

        FullName FirstName LastName
0   henry-dupuis     henry   dupuis
1  arthur-keynes    arthur   keynes

答案 2 :(得分:0)

如果全名列表中您使用'-'作为分隔符。

然后您可以 首先在其上运行一个循环,然后拆分循环的元素并从中创建一个数据框。

for element in fullnames:
    splitNames = element.split('-')
    firstName.append(splitNames[0])
    lastName.append(splitNames[1])

pd.DataFrame(firstName, columns=['firstName'])
pd.DataFrame(lastName, columns=['lastName'])

这还将为给定的firstName和lastName创建一个熊猫数据框。

答案 3 :(得分:0)

您应该使用str的{​​{1}}功能,这些功能是矢量化的:

pandas

这可以确保名称(仅在第一个import pandas as pd df = pd.DataFrame(["henry-dupuis", "arthur-keynes", "james-arthur-conway"], columns=["fullname"]) df[["firstname", "lastname"]] = df.fullname.str.split("-", 1).apply(pd.Series) print(df) # fullname firstname lastname # 0 henry-dupuis henry dupuis # 1 arthur-keynes arthur keynes # 2 james-arthur-conway james arthur-conway 处分开),以防名称中有更多名称。这可能是错误的,但至少可以正常工作。任何代码都无法在任何地方正确地获得此信息。有人叫James-Arthur Conway,有人叫James Arthur-Conway。您应该阅读falsehoods programmers believe about names

无论如何,如果您的数据确实符合给定的要求,则此代码将比Python中执行的任何循环都有效,并且速度更快。