3 回答

TA贡献1875条经验 获得超3个赞
我有一个带有分隔符的文本列,我想要两个列
df['A'], df['B'] = df['AB'].str.split(' ', 1).str
df['AB'].str.split(' ', 1, expand=True)
.tolist()
zip()
.
详细情况:
str.extract()
.str.split()
>>> import pandas as pd>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2']})>>> df AB0 A1-B11 A2-B2>>> df['AB_split'] = df['AB'].str.split('-')>>> df AB AB_split0 A1-B1 [A1, B1]1 A2-B2 [A2, B2]
.str.split()
包含两个元素列表的列。
两个列,每个列都包含列表的各个元素?
.str
>>> upper_lower_df = pd.DataFrame({"U": ["A", "B", "C"]})>>> upper_lower_df U0 A1 B2 C>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower()>>> upper_lower_df U L0 A a1 B b2 C c
>>> df['AB'].str[0]0 A1 AName: AB, dtype: object>>> df['AB'].str[1]0 11 2Name: AB, dtype: object
.str
>>> df['AB'].str.split('-', 1).str[0]0 A11 A2Name: AB, dtype: object>>> df['AB'].str.split('-', 1).str[1]0 B11 B2Name: AB, dtype: object
>>> df['A'], df['B'] = df['AB'].str.split('-', 1).str>>> df AB AB_split A B0 A1-B1 [A1, B1] A1 B11 A2-B2 [A2, B2] A2 B2
.str.split()
expand=True
>>> df['AB'].str.split('-', 1, expand=True) 0 10 A1 B11 A2 B2
>>> df = df[['AB']]>>> df AB0 A1-B11 A2-B2>>> df.join(df['AB'].str.split('-', 1, expand=True).rename(columns={0:'A', 1:'B'})) AB A B0 A1-B1 A1 B11 A2-B2 A2 B2

TA贡献1712条经验 获得超3个赞
In [11]: df.row.str.extract('(?P<fips>\d{5})((?P<state>[A-Z ]*$)|(?P<county>.*?), (?P<state_code>[A-Z]{2}$))')Out[11]: fips 1 state county state_code0 00000 UNITED STATES UNITED STATES NaN NaN1 01000 ALABAMA ALABAMA NaN NaN2 01001 Autauga County, AL NaN Autauga County AL3 01003 Baldwin County, AL NaN Baldwin County AL4 01005 Barbour County, AL NaN Barbour County AL[5 rows x 5 columns]
(?P<fips>\d{5})
匹配五位数( \d
)并给他们起名字 "fips"
.
((?P<state>[A-Z ]*$)|(?P<county>.*?), (?P<state_code>[A-Z]{2}$))
|
(?P<state>[A-Z ]*$)
匹配任何数字( *
)大写字母或空格( [A-Z ]
),并将其命名为 "state"
在字符串结束之前( $
),
(?P<county>.*?), (?P<state_code>[A-Z]{2}$))
匹配其他任何东西( .*
)然后 一个逗号和一个空格 匹配两位数 state_code
在字符串结束之前( $
).
在本例中:
请注意,前两行命中了“state”(将nan保留在县中和state_code列中),而最后三行则命中了县(State_Code)(将nan保留在State列中)。
添加回答
举报