gpt4 book ai didi

Python 2.7-将函数应用于 pandas 数据框的 2 列的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:25 27 4
gpt4 key购买 nike

我需要检查 pandas 数据框的一列中的字符串是否在另一列中。示例数据:

aa=['mma', 'sdas', 'asdsad']*1000
t=pd.DataFrame(aa)
a=['m', 'f', 'n']*1000
t1=pd.DataFrame(a)
t2=pd.concat([t,t1], axis=1)
t2.columns=['texto', 'textito']

使用 lambda 函数我得到了我需要的东西,但是它太慢了:

t2['veo1'] = t2.apply(lambda row: int(row['textito'] in row['texto']),axis=1)

t2[:10]

    texto textito  veo1
0 mma m 1
1 sdas f 0
2 asdsad n 0
3 mma m 1
4 sdas f 0
5 asdsad n 0
6 mma m 1
7 sdas f 0
8 asdsad n 0
9 mma m 1

有没有办法更快地做到这一点?

谢谢。

最佳答案

如果空间充足,您可以通过将 set 应用到原始 DataFrame 来创建一个新的 DataFrame。那么成员资格测试将比对字符串使用 in 快得多。

# setup
aa=['mma', 'sdas', 'asdsad']*1000
t=pd.DataFrame(aa)
a=['m', 'f', 'n']*1000
t1=pd.DataFrame(a)
df=pd.concat([t,t1], axis=1)
df.columns=['a', 'b']

# new DataFrame using the set of the relevant columns
df2 = df.applymap(set)
# new column based on the membership test
df['v'] = df2.b <= df2.a

>>> df[:10]
a b v
0 mma m True
1 sdas f False
2 asdsad n False
3 mma m True
4 sdas f False
5 asdsad n False
6 mma m True
7 sdas f False
8 asdsad n False
9 mma m True
>>>

关于Python 2.7-将函数应用于 pandas 数据框的 2 列的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39312737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com