Python pandas 将文本中的数字和文本提取到两个新列
Python pandas extracting numbers and text within text to two new column
我在 A 列中有以下文字:
A
hydrogen sulfide 7783-06-4
none
chlorine 7782-50-5
我只想将数字提取到另一个新的 B 列和 C 列(A 旁边),例如:
B
hydrogen_sulfide
none
chlorine
C
7783-06-4
none
7782-50-5
试过这些
import pandas as pd
df["B"] = df["A"].str.extract("(\d*\)", expand=True)
df["C"] = df["A"].str.extract("(d+)", expand=True)
print(df)
欣赏
尝试使用模式 ([A-Za-z\s]+)([\d\-]+)
例如:
df = pd.DataFrame({"A": ['hydrogen sulfide 7783-06-4', None, 'chlorine 7782-50-5']})
df[["B", "C"]] = df["A"].str.extract(r"([A-Za-z\s]+)([\d\-]+)")
print(df)
输出:
A B C
0 hydrogen sulfide 7783-06-4 hydrogen sulfide 7783-06-4
1 None NaN NaN
2 chlorine 7782-50-5 chlorine 7782-50-5
我在 A 列中有以下文字:
A
hydrogen sulfide 7783-06-4
none
chlorine 7782-50-5
我只想将数字提取到另一个新的 B 列和 C 列(A 旁边),例如:
B
hydrogen_sulfide
none
chlorine
C
7783-06-4
none
7782-50-5
试过这些
import pandas as pd
df["B"] = df["A"].str.extract("(\d*\)", expand=True)
df["C"] = df["A"].str.extract("(d+)", expand=True)
print(df)
欣赏
尝试使用模式 ([A-Za-z\s]+)([\d\-]+)
例如:
df = pd.DataFrame({"A": ['hydrogen sulfide 7783-06-4', None, 'chlorine 7782-50-5']})
df[["B", "C"]] = df["A"].str.extract(r"([A-Za-z\s]+)([\d\-]+)")
print(df)
输出:
A B C
0 hydrogen sulfide 7783-06-4 hydrogen sulfide 7783-06-4
1 None NaN NaN
2 chlorine 7782-50-5 chlorine 7782-50-5