拆分Dataframe列值并分配给其他列

拆分Dataframe列值并分配给其他列

我在一个数据框中有以下数据,希望从第一次出现的;
数据框:

IT;3P;J;1;C;A;TO1;A;A;A;I
KR;3P;J;1;C;A;TO1;A;A;A;I
MX;3P;J;1;C;A;TO1;A;A;A;I
NL;3P;J;1;C;A;TO1;A;A;A;I
NZ;3P;J;1;C;A;TO1;A;A;A;I
PH;3P;J;1;C;A;TO1;A;A;A;I
PT;3P;J;1;C;A;TO1;A;A;A;I
RU;3P;J;1;C;A;TO1;A;A;A;I
SG;3P;J;1;C;A;TO1;A;A;A;I
TR;3P;J;1;C;A;TO1;A;A;A;I
US;3P;J;1;C;A;TO1;A;A;A;I

df['itemNew'] = df['item'].str.split(';', 1)[1]

给出错误:ValueError:值的长度与索引的长度不匹配
新栏中的预期结果如下:
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I
3P;J;1;C;A;TO1;A;A;A;I

试过这个:
df['itemNew'] = ''
df['itemNew'] = df['item'].str.split(';', 1).str[1]

出现警告消息:
设置为复制警告:
试图在数据帧切片的副本上设置值。
尝试改用.loc[行索引器,列索引器]=值

最佳答案

似乎您需要str来选择由split创建的第二个列表:

df['itemNew'] = df['item'].str.split(';', 1).str[1]

使用copy
df= Mapping.loc[Mapping['DatasetId'].isin(['bisdss2016', 'imffsi2017apr', 'imfifss2017', 'imfifss2017aug', 'wbdb2016oct'])].copy()

如果以后修改df中的值,您将发现修改不会传播回原始数据(Mapping),Pandas会发出警告。

关于python - 拆分Dataframe列值并分配给其他列,Python 3.6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46217986/

10-09 19:42