Python 熊猫使用两个数据帧比较和放置数据

Python 熊猫使用两个数据帧比较和放置数据,python,pandas,Python,Pandas,python中有两个数据帧,如下所示: df2 ----------------------------- DATA_CLASS DATA_INFO DATA_SIZE 0 AA1 TYPE1 3 1 AAAB TYPE2 4 2 AACCC TYPE3 5 df1['DATA_INFO'] = '' for idx, row in df2.iterrows(): size =

python中有两个数据帧,如下所示:

df2
-----------------------------
    DATA_CLASS  DATA_INFO   DATA_SIZE
0   AA1         TYPE1        3
1   AAAB        TYPE2        4
2   AACCC       TYPE3        5
df1['DATA_INFO'] = ''
for idx, row in df2.iterrows():
    size = row['DATA_SIZE']

    df1.loc[df1.DATA.str[:size] == row['DATA_CLASS'], 'DATA_INFO'] =  row['DATA_INFO']    
df1是原始数据集

df2是df1的列信息

import pandas as pd

df1 = pd.DataFrame()
data_list = ['AA1','AAABB','AACCCDDDD', 'AACCCDDDDEEEEE','AA111','AA11222']
df1['DATA'] = data_list
df1是这样的原始数据集:

df1
-------------------
    DATA
-------------------
0   AA1
1   AAABB
2   AACCCDDDD
3   AACCCDDDDEEEEE
4   AA111
5   AA11222
df2代码:

df2 = pd.DataFrame()
data_list = ['AA1','AAAB','AACCC']
info_list = ['TYPE1','TYPE2','TYPE3']
size_list = [3, 4, 5]
df2['DATA_CLASS'] = data_list
df2['DATA_INFO']  = info_list
df2['DATA_SIZE']  = size_list
df2具有df1的“数据”列信息

df2如下所示:

df2
-----------------------------
    DATA_CLASS  DATA_INFO   DATA_SIZE
0   AA1         TYPE1        3
1   AAAB        TYPE2        4
2   AACCC       TYPE3        5
df1['DATA_INFO'] = ''
for idx, row in df2.iterrows():
    size = row['DATA_SIZE']

    df1.loc[df1.DATA.str[:size] == row['DATA_CLASS'], 'DATA_INFO'] =  row['DATA_INFO']    
我想使用df2['DATA\u CLASS','DATA\u SIZE']在df1中输入'DATA\u INFO'

所以我这样写:

df2
-----------------------------
    DATA_CLASS  DATA_INFO   DATA_SIZE
0   AA1         TYPE1        3
1   AAAB        TYPE2        4
2   AACCC       TYPE3        5
df1['DATA_INFO'] = ''
for idx, row in df2.iterrows():
    size = row['DATA_SIZE']

    df1.loc[df1.DATA.str[:size] == row['DATA_CLASS'], 'DATA_INFO'] =  row['DATA_INFO']    
因此,df1有了新的列“数据信息”:

    DATA              DATA_INFO
----------------------------------
0   AA1               TYPE1
1   AAABB             TYPE2
2   AACCCDDDD         TYPE3
3   AACCCDDDDEEEEE    TYPE3
4   AA111             TYPE1
5   AA11222           TYPE1
但是我在使用dataframe.loc函数时遇到了一个问题

如果df1的行数超过100000行,而df2的行数超过10000行,则需要很长时间来处理

我认为dataframe的iterrows()是延迟的主要原因

有人知道如何解决df1中的put数据类型吗
不使用.loc函数?

我认为您可以首先通过column
DATA\u SIZE
的值创建
df1
的新列以及所有可能的子字符串,然后使用
df1
和。如果订购很重要,请使用:


我认为您可以首先创建
df1
的新列,通过列
DATA\u SIZE
的值使用所有可能的子字符串,然后使用
df1
和。如果订购很重要,请使用:


非常感谢。就我而言,你是最好的。使用您的解决方案连接两个数据帧非常快。谢谢!就我而言,你是最好的。使用您的解决方案连接两个数据帧非常快。