将一列值分隔为 2 列

我有这样的数据:


Col

Texas[x]

Dallas

Austin

California[x]

Los Angeles

San Francisco

我想要的是这个:


col1              Col2

Texas[x]          Dallas

                  Austin

California[x]     Los Angeles

                  San Francisco

请帮忙!


慕侠2389804
浏览 160回答 2
2回答

慕的地8271018

使用 str.extract 创建列然后清理df.Col.str.extract('(.*\[x\])?(.*)').ffill()\.replace('', np.nan).dropna()\.rename(columns = {0:'Col1', 1: 'Col2'})\.set_index('Col1')                 Col2Col1    Texas [x]       DallasTexas [x]       AustinCalifornia [x]  Los AngelesCalifornia [x]  San Francisco更新:解决后续问题。df.Col.str.extract('(.*\[x\])?(.*)').ffill()\.replace('', np.nan).dropna()\.rename(columns = {0:'Col1', 1: 'Col2'})你得到    Col1            Col21   Texas[x]        Dallas2   Texas[x]        Austin4   California[x]   Los Angeles5   California[x]   San Francisco

函数式编程

似乎[x]代表列表中的状态。您可以尝试使用iterrows. 像这样的东西:state = None  # initialize as None, in case something goes wrong  city = Nonerowlist = []for idx, row in df.iterrows():    # get the state    if '[x]' in row['Col']:        state = row['Col']        continue    # now, get the cities    city = row['Col']    rowlist.append([state, city])df2 = pd.DataFrame(rowlist)这假设您的初始数据框被调用df并且列名是Col,并且仅当城市后跟州时才有效,这似乎是从您的数据样本中得出的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python