为了账号安全,请及时绑定邮箱和手机立即绑定

将一列值分隔为 2 列

将一列值分隔为 2 列

慕侠2389804 2021-11-02 10:15:06
我有这样的数据:ColTexas[x]DallasAustinCalifornia[x]Los AngelesSan Francisco我想要的是这个:col1              Col2Texas[x]          Dallas                  AustinCalifornia[x]     Los Angeles                  San Francisco请帮忙!
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

使用 str.extract 创建列然后清理


df.Col.str.extract('(.*\[x\])?(.*)').ffill()\

.replace('', np.nan).dropna()\

.rename(columns = {0:'Col1', 1: 'Col2'})\

.set_index('Col1')


                 Col2

Col1    

Texas [x]       Dallas

Texas [x]       Austin

California [x]  Los Angeles

California [x]  San Francisco

更新:解决后续问题。


df.Col.str.extract('(.*\[x\])?(.*)').ffill()\

.replace('', np.nan).dropna()\

.rename(columns = {0:'Col1', 1: 'Col2'})

你得到


    Col1            Col2

1   Texas[x]        Dallas

2   Texas[x]        Austin

4   California[x]   Los Angeles

5   California[x]   San Francisco


查看完整回答
反对 回复 2021-11-02
?
函数式编程

TA贡献1807条经验 获得超9个赞

似乎[x]代表列表中的状态。您可以尝试使用iterrows. 像这样的东西:


state = None  # initialize as None, in case something goes wrong  

city = None

rowlist = []

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,并且仅当城市后跟州时才有效,这似乎是从您的数据样本中得出的。


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信