我正在尝试将以下数据框拆分为单独的列。我希望一栏中的所有文字和数字都在空白处分割。
df[0].head(10)
0 []
1 [Andaman and Nicobar, 194, 52, 142, 0]
2 [Andhra Pradesh, 40,646, 19,814, 20,298, 534]
3 [Arunachal Pradesh, 609, 431, 175, 3]
4 [Assam, 20,646, 6,490, 14,105, 51]
5 [Bihar, 23,589, 8,767, 14,621, 201]
6 [Chandigarh, 660, 169, 480, 11]
7 [Chhattisgarh, 4,964, 1,429, 3,512, 23]
8 [Dadra and Nagar Haveli and Daman, 585, 182, 4...
9 [Daman and Diu, 0, 0, 0, 0]
Name: 0, dtype: object
如果我仅在空白处分割并展开,尽管数字已正确分割,但文本将分割为多列。由于不同观察值的文本跨越不同的列数,因此我无法再次合并它们。显然,解决方案是编写正确的“ regex”并拆分。我无法弄清楚所需的正则表达式,因此无法请求输入。
df1 = df[0].str.split(' ', expand= True)
df1.head(10)
0 1 2 3 4 5 6 7 8 9
0 [] None None None None None None None None None
1 [Andaman and Nicobar, 194, 52, 142, 0] None None None
2 [Andhra Pradesh, 40,646, 19,814, 20,298, 534] None None None None
3 [Arunachal Pradesh, 609, 431, 175, 3] None None None None
4 [Assam, 20,646, 6,490, 14,105, 51] None None None None None
5 [Bihar, 23,589, 8,767, 14,621, 201] None None None None None
6 [Chandigarh, 660, 169, 480, 11] None None None None None
7 [Chhattisgarh, 4,964, 1,429, 3,512, 23] None None None None None
8 [Dadra and Nagar Haveli and Daman, 585, 182, 401, 2]
9 [Daman and Diu, 0, 0, 0, 0] None None None
我期望的结果将是这样:
0 1 2 3 4 5 6 7 8 9
0 [] None None None None None None None None None
1 [Andaman and Nicobar, 194, 52, 142, 0] None None None None None
2 [Andhra Pradesh, 40,646, 19,814, 20,298, 534] None None None None None
3 [Arunachal Pradesh, 609, 431, 175, 3] None None None None None
4 [Assam, 20,646, 6,490, 14,105, 51] None None None None None
5 [Bihar, 23,589, 8,767, 14,621, 201] None None None None None
6 [Chandigarh, 660, 169, 480, 11] None None None None None
7 [Chhattisgarh, 4,964, 1,429, 3,512, 23] None None None None None
8 [Dadra and Nagar Haveli and Daman, 585, 182, 401, 2] None None None None None
9 [Daman and Diu, 0, 0, 0, 0] None None None None None
答案 0 :(得分:3)
您可以使用Public Function TestJohn2(derp As String) As String
TestJohn2 = "test john2 " & derp
End Function
和str.replace
重塑数据框。
str.extract
names = df[0].str.extract('(\D+)').replace('\[|,','',regex=True).rename(columns={0 : 'names'})
df_new = names.join(df[0].str.replace('\D+,','').str.strip(']').str.split(' ',expand=True))