我有一個 pandas 資料框df,如下所示:
df = pd.DataFrame({'Name':['Harry', 'Sam', 'Raj', 'Jamie', 'Rupert'],
'Country':['USA', "['USA', 'UK', 'India']", "['India', 'USA']", 'Russia', 'China']})
Name Country
Harry USA
Sam ['USA', 'UK', 'India']
Raj ['India', 'USA']
Jamie Russia
Rupert China
列中的一些值Country是串列,我想用串列中的第一個元素替換這些串列,使其看起來像這樣:
Name Country
Harry USA
Sam USA
Raj India
Jamie Russia
Rupert China
uj5u.com熱心網友回復:
由于您有字串,因此您可以在此處使用正則運算式:
df['Country'] = df['Country'].str.extract('((?<=\[["\'])[^"\']*|^[^"\'] $)')
輸出(為清楚起見作為新列):
Name Country Country2
0 Harry USA USA
1 Sam ['USA', 'UK', 'India'] USA
2 Raj ['India', 'USA'] India
3 Jamie Russia Russia
4 Rupert China China
正則運算式:
( # start capturing
(?<=\[["\']) # if preceded by [" or ['
[^"\']* # get all text until " or '
| # OR
^[^"\'] $ # get whole string if it doesn't contain " or '
) # stop capturing
uj5u.com熱心網友回復:
嘗試類似:
import ast
def changeStringList(value):
try:
myList = ast.literal_eval(value)
return myList[0]
except:
return value
df["Country"] = df["Country"].apply(changeStringList)
df
輸出
| 姓名 | 國家 | |
|---|---|---|
| 0 | 哈利 | 美國 |
| 1 | 山姆 | 美國 |
| 2 | 拉吉 | 印度 |
| 3 | 杰米 | 俄羅斯 |
| 4 | 魯珀特 | 中國 |
請注意,通過使用該changeStringList函式,我們嘗試將字串串列改造成可解釋的字串串列并回傳第一個值。如果它不是串列,則回傳值本身。
uj5u.com熱心網友回復:
嘗試這個:
import ast
df['Country'] = df['Country'].where(df['Country'].str.contains('[', regex=False), '[\'' df['Country'] '\']').apply(ast.literal_eval).str[0]
輸出:
>>> df
Name Country
0 Harry USA
1 Sam USA
2 Raj India
3 Jamie Russia
4 Rupert China
uj5u.com熱心網友回復:
正則運算式解決方案。
import re
tempArr = []
for val in df["Country"]:
if val.startswith("["):
val = re.findall(r"[A-Za-z] ",val)[0]
tempArr.append(val)
else: tempArr.append(val)
df["Country"] = tempArr
df
Name Country
0 Harry USA
1 Sam USA
2 Raj India
3 Jamie Russia
4 Rupert China
uj5u.com熱心網友回復:
如果您有字串,您可以使用Series.str.strip它來洗掉 ']'或'['然后用于Series.str.split將所有行轉換為串列,之后我們可以使用.str訪問器
df['Country'] = df['Country'].str.strip('[|]').str.split(',')\
.str[0].str.replace("'", "")
Name Country
0 Harry USA
1 Sam USA
2 Raj India
3 Jamie Russia
4 Rupert China
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/443643.html
