• 1000 вторые данные - это NaN, а затем идут вторые данные, а столбцы первых данных - NaN. Я удалил повторяющиеся данные, и в исходных наборах данных сначала не было пропущенных значений перед объединением.
ds.head
Out[4]:
<bound method NDFrame.head of Date Pos Line SHIFT ... HOUR_BEGIN HOUR_END TavFormNo PrgNo
0 960331 P6-212 G23 B ... 22:40 23:05 1739 10676
1 960331 P6-247 G23 C ... 05:25 05:35 1739 10676
2 960331 P6-247 G23 C ... 05:35 05:50 1739 10676
3 960331 P6-247 G23 C ... 05:50 06:00 1739 10676
4 960331 P6-247 G23 C ... 06:00 06:15 1739 10676
... ... ... ... ... ... ... ... ...
209819 960707 D7-132 S4.400-1 C ... 23:45 07:30 28721 9964282
209820 960707 D7-132 S4.400-1 B ... 15:30 23:45 28721 9964282
209821 960707 D7-132 S4.400-1 A ... 07:30 08:00 28721 9964282
209822 960707 D7-132 S4.400-1 A ... 08:00 09:00 28721 9964282
209823 960707 D7-132 S4.400-1 A ... 09:00 09:30 28721 9964282
[209824 rows x 10 columns]>
dq.head
Out[5]:
<bound method NDFrame.head of Date ... name manshae zayeat beyn khat
0 13960114 ... No
1 13960114 ... No
2 13960114 ... No
3 13960114 ... No
4 13960114 ... No
... ... ...
27088 13961130 ... No
27089 13961130 ... No
27090 13961130 ... No
27091 13961130 ... No
27092 13961130 ... No
[27093 rows x 27 columns]>
dq.columns
Out[10]:
Index(['Date', 'Line', 'Pos', 'PrgNo', 'Code Blank', 'tedad blank',
'mojavez erfaghi', 'vaziat', 'sazande varagh', 'tedad tolid',
'tedad zayeat entehaye khotot', 'code irad zayeat', 'name irad zayeat',
'code manshae zaye', 'name manshae zaye', 'tedad mayob',
'code irad mayob', 'name irad mayob', 'code manshae mayob',
'name manshae mayob', 'sum zayeat beyn o enteha khat',
'tedad moghayerat', 'tedad zayeat beyn khat',
'code irad zayeat beyne khat', 'name irad zayeat beyn khat',
'code manshae zayeat beyn khat', 'name manshae zayeat beyn khat'],
dtype='object')
ds.columns
Out[11]:
Index(['Date', 'Pos', 'Line', 'SHIFT', 'STOP_CODE', 'DEFFMIN', 'HOUR_BEGIN',
'HOUR_END', 'TavFormNo', 'PrgNo'],
dtype='object')
столбцы «Дата», «Поз», «Строка» и «PrgNo» должны совпадать в новых набор данных. Я еще не изменил формат Date to Date, поэтому форматы Date и PrgNo (его производственный код) int и Pos и Line являются объектами. В данных ds и dq ботов отсутствуют пропущенные значения. Я использовал следующие функции:
df2 = pd.merge(dq, ds, on='PrgNo', how='inner',left_index=False, right_index=False)
df2.drop_duplicates(inplace=True)
df2.shape
Out[28]: (429207, 36)
В этих данных нет пропущенных значений, но я не знаю, почему количество строк удваивается.
df = pd.merge(dq, ds, on=('PrgNo','Date','Pos','Line'), how='outer')
df.shape
Out[17]: (236917, 33)
np.sum(df.isna())
Out[18]:
Date 0
Line 0
Pos 0
PrgNo 0
Code Blank 209824
tedad blank 209824
mojavez erfaghi 209824
vaziat 209824
sazande varagh 209824
tedad tolid 209824
tedad zayeat entehaye khotot 209824
code irad zayeat 209824
name irad zayeat 209824
code manshae zaye 209824
name manshae zaye 209824
tedad mayob 209824
code irad mayob 209824
name irad mayob 209824
code manshae mayob 209824
name manshae mayob 209824
sum zayeat beyn o enteha khat 209824
tedad moghayerat 209824
tedad zayeat beyn khat 209824
code irad zayeat beyne khat 209824
name irad zayeat beyn khat 209824
code manshae zayeat beyn khat 209824
name manshae zayeat beyn khat 209824
SHIFT 27093
STOP_CODE 27093
DEFFMIN 27093
HOUR_BEGIN 27093
HOUR_END 27093
TavFormNo 27093
dtype: int64
d = pd.concat([dq, ds],axis=0, join='outer', ignore_index=False,keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=False)
d.shape
Out[20]: (236917, 33)
np.sum(d.isna())
Out[21]:
Date 0
Line 0
Pos 0
PrgNo 0
Code Blank 209824
tedad blank 209824
mojavez erfaghi 209824
vaziat 209824
sazande varagh 209824
tedad tolid 209824
tedad zayeat entehaye khotot 209824
code irad zayeat 209824
name irad zayeat 209824
code manshae zaye 209824
name manshae zaye 209824
tedad mayob 209824
code irad mayob 209824
name irad mayob 209824
code manshae mayob 209824
name manshae mayob 209824
sum zayeat beyn o enteha khat 209824
tedad moghayerat 209824
tedad zayeat beyn khat 209824
code irad zayeat beyne khat 209824
name irad zayeat beyn khat 209824
code manshae zayeat beyn khat 209824
name manshae zayeat beyn khat 209824
SHIFT 27093
STOP_CODE 27093
DEFFMIN 27093
HOUR_BEGIN 27093
HOUR_END 27093
TavFormNo 27093
dtype: int64
В этих функциях идет набор данных df сначала, а затем приходит набор данных ds. Примечание: количество уникальных переменных в PrgNo не соответствует размеру наборов данных. Я имею в виду, что переменные prgno были повторены!