我想拆分数据集中的每一列。
想法是在“ /”之间分割数字,并在“ /”和“ @”之间分割字符串,然后将此值放入新的列中。
我尝试过这样的事情:
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...
答案 0 :(得分:1)
据我了解,您想从每个单元格中提取两个部分。 例如。来自 ES-NL-10096/1938/X1@hkzydzon.dk/6749 提取:
为此,您可以运行:
df.stack().str.extract(r'/(?P<num>\d+)/(?P<txt>[A-Z\d]+)@')\
.stack().unstack([1, 2])
您将在列上获得MultiIndex:
对于您的样本数据,结果为:
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
答案 1 :(得分:0)
您可以使用df.apply()
遍历Dataframe的所有列并应用给定的函数。这是一个示例:
def fn(col):
return col.str.split('/',1)
new_df = dane.apply (lambda col: fn(col), axis=1)
这里axis=1
表示遍历所有列。希望这会有所帮助!