繁体   English   中英

如何拆分多个列?

[英]How do I split multiple columns?

我想拆分数据集中的每一列。

这个想法是将“/”之间的数字和“/”和“@”之间的字符串分开,并将这些值放入新的列中。

我试过这样的:

new_df = dane['1: Brandenburg'].str.split('/',1)

然后为其创建新列。 但我不想对所有 60 列都这样做。

first column

1: Branburg :
ES-NL-10096/1938/X1@hkzydzon.dk/6749
BE-BR-6986/3551/B1@oqk.bf/39927
PH-SA-39552610/2436/A1@venagi.hr/80578
PA-AE-59691/4881/X1@zhicksl.cl/25247 

second column 

2: Achon :
DE-JP-20082/2066/A2@qwier.cu/68849
NL-LK-02276/2136/A1@ozmdpfts.de/73198
OM-PH-313/3671/Z1@jtqy.ml/52408
AE-ID-9632/3806/C3@lhbt.ar/83484

etc,etc...

据我了解,您想从每个单元格中提取两个部分 例如从ES-NL-10096/1938/X1@hkzydzon.dk/6749应该提取:

  • 1938 - 斜线之间的数字,
  • X1 - 第二个斜杠和@之间的字符串。

为此,您可以运行:

df.stack().str.extract(r'/(?P<num>\d+)/(?P<txt>[A-Z\d]+)@')\
    .stack().unstack([1, 2])

您将在列上获得 MultiIndex:

  • 顶级 - “源”列的名称,
  • 第二级 - numtxt - 2 个提取的“部分”。

对于您的样本数据,结果是:

  1: Brandenburg     2: Achon    
             num txt      num txt
0           1938  X1     2066  A2
1           3551  B1     2136  A1
2           2436  A1     3671  Z1
3           4881  X1     3806  C3

您可以使用df.apply()遍历 Dataframe 的所有列并应用给定的 function。 这是一个例子:

def fn(col):
    return col.str.split('/',1)

new_df = dane.apply (lambda col: fn(col), axis=1)

这里axis=1表示遍历所有列。 希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM