python用pandas投票_python – 正确地做Pandas …而不是使用循环

我刚刚开始使用Pandas,我发现很难对待像数据帧这样的数据帧.每隔一段时间,我就无法解决如何在不迭代行的情况下做某事.

例如,我有一个包含预算信息的数据框.我想从’简短描述’中提取’供应商’,这是一个三种可能形式之一的字符串:

> blah blah blah to vendor name

> blah blah blah at vendor name

>供应商名称

我可以使用以下代码执行此操作,但我不禁觉得它没有正确使用Pandas.有什么想改善吗?

for i, row in dataframe.iterrows():

current = dataframe['short description'][i]

if 'to' in current:

point_of_break = current.index('to') + 3

dataframe['vendor'][i] = current[point_of_break:]

elif 'at' in current:

point_of_break = current.index('at') + 3

dataframe['vendor'][i] = current[point_of_break:]

else:

dataframe['vendor'][i] = current

解决方法:

我想你可以使用str.split by to或at然后用str [-1]选择list的最后一个值:

df = pd.DataFrame({'A':['blah blah blah to "vendor name"',

'blah blah blah at "vendor name"',

'"vendor name"']})

print (df)

A

0 blah blah blah to "vendor name"

1 blah blah blah at "vendor name"

2 "vendor name"

print (df.A.str.split('[at|to]\s+'))

0 [blah blah blah t, "vendor name"]

1 [blah blah blah a, "vendor name"]

2 ["vendor name"]

Name: A, dtype: object

df['vendor'] = df.A.str.split('(at|to) *').str[-1]

print (df)

A vendor

0 blah blah blah to "vendor name" "vendor name"

1 blah blah blah at "vendor name" "vendor name"

2 "vendor name" "vendor name"

或者使用:

df['vendor'] = df.A.str.split('[at|to]\s+').str[-1]

print (df)

A vendor

0 blah blah blah to "vendor name" "vendor name"

1 blah blah blah at "vendor name" "vendor name"

2 "vendor name" "vendor name"

标签:python,dataframe,pandas

来源: https://codeday.me/bug/20190627/1308321.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值