亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

區分數字和字母并在 Python 中創建新列

區分數字和字母并在 Python 中創建新列

RISEBY 2023-09-26 16:28:03
數據框看起來像這樣 df::    item_id value 0   101002  1.0086651   101004  2.0258182   101005  0.5305163   101007  0.7329184   101010  1.787264... ... ...621 ZB005   3.464102622 ZB007   2.345208623 ZB008   3.464102624 ZBD002  2.592055625 ZBD005  2.373321我想newcol根據列的第一個元素/字母創建一個新列item_id :如果第一個字母item_id是字母表,則返回“alphabet”;如果第一個字母是數字,則返回“number”。預期輸出:    item_id value     newcol0   101002  1.008665  number1   101004  2.025818  number 2   101005  0.530516  number3   101007  0.732918  number4   101010  1.787264  number... ... ...621 ZB005   3.464102  alphabet 622 ZB007   2.345208  alphabet 623 ZB008   3.464102  alphabet 624 ZBD002  2.592055  alphabet 625 ZBD005  2.373321  alphabet 我試過:df['new_component'] = [lambda x: 'alphabet' if x.isalpha() else 'number' for x in df.item_id]返回的    item_id value       new_component0   101002  1.008665    <function <listcomp>.<lambda> at 0x000002663B04E948>1   101004  2.025818    <function <listcomp>.<lambda> at 0x000002663B04E828>2   101005  0.530516    <function <listcomp>.<lambda> at 0x000002663B04EAF8>3   101007  0.732918    <function <listcomp>.<lambda> at 0x000002663B04EB88>4   101010  1.787264    <function <listcomp>.<lambda> at 0x000002663B04EC18>... ... ...代碼有什么問題嗎?有更好的方法嗎?
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

首先設置默認值的列'alphabet',然后更改帶有數字的列:


df['newcol'] = 'alphabet'

df.loc[df.item_id.str[0].str.isdigit(),'newcol'] = 'number'

如果您更喜歡按照您嘗試過的方式進行操作,請按以下步驟操作:


df['newcol'] = ['number' if x[0].isdigit() else 'alphabet' for x in df.item_id]

或等價:


df['newcol'] = ['alphabet' if x[0].isalpha() else 'number' for x in df.item_id]

輸出:


    item_id     value    newcol

0    101002  1.008665    number

1    101004  2.025818    number

2    101005  0.530516    number

3    101007  0.732918    number

4    101010  1.787264    number

621   ZB005  3.464102  alphabet

622   ZB007  2.345208  alphabet

623   ZB008  3.464102  alphabet

624  ZBD002  2.592055  alphabet

625  ZBD005  2.373321  alphabet


查看完整回答
反對 回復 2023-09-26
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

在列表推導式中,您將創建 lambda 函數列表。

您所需要的只是首先在列表外部定義 lambda 函數

y=lambda x, ...

然后,在列表理解中調用它。


查看完整回答
反對 回復 2023-09-26
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號