Python 如何在pandas中拆分列?

Python 如何在pandas中拆分列?,python,pandas,Python,Pandas,我有一个关于如何将列元素拆分为多个元素的问题。 如果数据帧看起来像 Src Dst A [A,B] B [B,A] C [C] D [D,E,F] E [E,D,F] F [F,D,E] ... 此代码 df["Dst"] = df.Dst.apply(lambda x: x[1:-1].split(",")) 效果很好 但是,如果我有此数据帧: Src Dst x.serm.cool

我有一个关于如何将列元素拆分为多个元素的问题。 如果数据帧看起来像

Src  Dst
A    [A,B]
B    [B,A]
C    [C]
D    [D,E,F]
E    [E,D,F]
F    [F,D,E]
...
此代码

df["Dst"] = df.Dst.apply(lambda x: x[1:-1].split(","))
效果很好

但是,如果我有此数据帧:

   Src          Dst
x.serm.cool    [x.serm.cool, x.creat.cool]
x.creat.cool   [x.creat.cool, x.serm.cool]
sms.sol.tr     [sms.sol.tr]
bbb.asl.gt     [bbb.asl.gt,cdc.fre.gh,str.alert.jf]
cdc.fre.gh     [cdc.fre.gh, bbb.asl.gt,str.alert.jf]
str.alert.jf   [str.alert.jf, bbb.asl.gt, cdc.fre.gh]
    ...
这一点是行不通的。我试过了

df["Dst"]=df["Dst"].apply(lambda x: x.split(','))
但我有一个错误:

AttributeError:“Series”对象没有属性“split”

你能解释一下这两种情况有什么不同吗


谢谢您

检查两个数据帧的列类型

df.Dst.apply(type)

#one of them should be str the 2nd one should be list 
对于第二个,我们只需执行
explode

G = nx.from_pandas_edgelist(df.explode("Dst"), 'Src', 'Dst')

检查两个数据帧的列类型

df.Dst.apply(type)

#one of them should be str the 2nd one should be list 
对于第二个,我们只需执行
explode

G = nx.from_pandas_edgelist(df.explode("Dst"), 'Src', 'Dst')

我假设您的数据帧只有这两列

df["newcol1"]=[x[0] for x in df["Dst"]]

df["newcol2"]=[x[1] for x in df["Dst"]]
但是,如果您希望它在每个列中都有X个列表的数据帧中工作,我相信下面的代码将帮助您解决这个问题

split_df=df['Dst'].apply(lambda x: pd.Series(','.join(x).split(',')))
final_df=pd.concat([split_df,df],axis=1)

我假设您的数据帧只有这两列

df["newcol1"]=[x[0] for x in df["Dst"]]

df["newcol2"]=[x[1] for x in df["Dst"]]
但是,如果您希望它在每个列中都有X个列表的数据帧中工作,我相信下面的代码将帮助您解决这个问题

split_df=df['Dst'].apply(lambda x: pd.Series(','.join(x).split(',')))
final_df=pd.concat([split_df,df],axis=1)

这更像是
explode
not split,第一个是string,第二个是listThank you,YOBEN_S。这个问题与这个问题相关:因为我有更多字符的行,我认为问题在于字符数或拆分中的问题。冷,请确认explode也可以像split一样工作,在这个问题中?我想使用列表中的元素作为节点相互链接(如果在同一个列表中)@YOBEN_S,如果你想看一看,我打开这个新问题来解释我要做的一切:。我希望这个示例可以很好,更像是
explode
not split,第一个是string,第二个是listThank you,YOBEN_S。这个问题与这个问题相关:因为我有更多字符的行,我认为问题在于字符数或拆分中的iin。冷,请确认explode也可以像split一样工作,在这个问题中?我想使用列表中的元素作为节点相互链接(如果在同一个列表中)@YOBEN_S,如果你想看一看,我打开这个新问题来解释我要做的一切:。我希望能收到样品fine@still_learnings你的样本数据没有解决你的问题,伙计..我认为问题在于数据。我收到了错误消息:
ValueError:“c”参数有79个元素,这与大小为76的“x”和“y”不一致。其中
79
是我的
Src
的长度,包括重复项,而
76
是不包括
Src
重复项的数据帧长度。非常感谢你的帮助。我正在试图找出如何不排除重复项,因为它们对于节点的大小很重要。@still\u Learns您的示例数据并不能解决您的问题,伙计..我认为问题在于数据。我收到了错误消息:
ValueError:“c”参数有79个元素,这与大小为76的“x”和“y”不一致。其中
79
是我的
Src
的长度,包括重复项,而
76
是不包括
Src
重复项的数据帧长度。非常感谢你的帮助。我试图找出如何不排除重复项,因为它们对于节点的大小很重要。