用另一个数据帧替换数据帧条目(系列?)进入?矢量化?压缩?

2024-09-30 18:33:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了一个函数来执行我想要的任务,但是它非常慢。对于头为DataFrame (df1=pd.read(file1))'raw_data'DataFrame (df1=pd.read(file1)),我当前使用.iterows循环遍历每个字符串,并将每个条目发送给一个函数,该函数会进行剥离和降低,然后使用str.replace(row['replacethis'],row['withthis']),其中'replacethis''withthis'是第二个DataFrame ((df2=pd.read(file2))中的列。你知道吗

但是,这是非常缓慢的,对于file1/file2的大量元素需要几天的时间。我已经找了好几个小时/天的解决方案,我尝试过使用series.str.replace和列表压缩,但没有效果,比如:

'raw_data'=[[x['raw_data'].replace(y['replacethis'],y['withthis']) for y in df2.iterrows()] for x in df1.iterrows()]

有人能提供任何指导或建议吗?我快疯了。你知道吗


Tags: 函数dataframereaddatarawfile1replacefile2
1条回答
网友
1楼 · 发布于 2024-09-30 18:33:10

最好的方法可能是使用Pandas的DataFrame.replace方法:

# The raw_data DF
df1 = pd.DataFrame({'raw_data': ['Lorem', 'ipsum', 'dolor', 'sit', 'amet,', 
                                 'consectetur', 'adipiscing', 'elit']})
print 'Original:'
print df1

# The replacement patterns DF
df2 = pd.DataFrame({'replacethis': ['ipsum', 'it'], 'withthis': ['doggy', 'THAT']})
pattern_dict = df2.set_index('replacethis')['withthis'].to_dict()

df1_replaced = df1.replace(pattern_dict, regex=True)
print '\nAfter Replacement:'
print df1_replaced

结果:

Original:
      raw_data
0        Lorem
1        ipsum
2        dolor
3          sit
4        amet,
5  consectetur
6   adipiscing
7         elit

After Replacement:
      raw_data
0        Lorem
1        doggy
2        dolor
3        sTHAT
4        amet,
5  consectetur
6   adipiscing
7       elTHAT

相关问题 更多 >