在合并了两个数据帧之后

2024-06-25 23:20:56 发布

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

我有两个数据帧-dfstratnum,我正在尝试合并。两者都有一个匹配的“STRAT”列:

df.dtypes
Out[51]: 
index     float64
BHID     category
FROM      float64
TO        float64
FE        float64
SIO2      float64
S         float64
HEM_R     float64
QTZ_R     float64
PYR_R     float64
STRAT    category
WEATH     float64
dtype: object

stratnum.dtypes
Out[52]: 
STRAT       category
stratnum       int32
dtype: object

我试着合并这两个数据帧,但得到了一大堆的南。首先,我认为数据类型是一个问题—在两个数据帧中,STRAT都是object数据类型,stratnum也是

所以我把STRAT转换成category,stratnum转换成int。不过,如果我跑:

df2 = pd.merge(df, stratnum, how='left', on='STRAT').reset_index()

df2.head(5)
Out[53]: 
   level_0  index     BHID  FROM    TO    FE   SIO2      S      HEM_R  \
0        0    1.0  EMS0417   0.0   2.0  32.7  39.62  0.019  30.169856   
1        1    2.0  EMS0417   2.0   4.0  34.9  38.16  0.021  34.454128   
2        2    3.0  EMS0417   4.0   6.0  38.7  32.92  0.023  37.480192   
3        3    4.0  EMS0417   6.0   8.0  42.4  28.77  0.011  43.541773   
4        4    5.0  EMS0417   8.0  10.0  47.8  21.84  0.015  55.299471   

       QTZ_R     PYR_R STRAT  WEATH  stratnum  
0  32.160097  0.035545   TD3    0.0       NaN  
1  31.218645  0.039287   TD3    0.0       NaN  
2  25.931527  0.043029   TD3    0.0       NaN  
3  22.559341  0.020579   TD3    0.0       NaN  
4  15.487928  0.028062   TD3    0.0       NaN  

我在stratnum列中得到了一大堆nan,而在原始的stratnum数据帧中,这一切都很好:

tratnum.head(5)
Out[54]: 
  STRAT  stratnum
0   D1       5610
1   D2       5620
2   D3       5630
3   D4       5640
4   WL       5710

我做错什么了

编辑:我的数据似乎有问题。如果我尝试为“TD3”筛选stratnum数据帧,例如:

test = stratnum[['STRAT']=='TD3']
...
KeyError: False

同时,如果我只查看数据帧,它就在那里(#71):

stratnum

Out[74]: 
     STRAT  stratnum
0      D1       5610
1      D2       5620
2      D3       5630
3      D4       5640
...
69    TD1       8110
70    TD2       8120
71    TD3       8130
72     UN       9999
73      W       5700

这可能是因为我从excel电子表格中获取数据,并且它有一些奇怪的编码吗

EDIT2:将原始excel电子表格的编码更改为UTF-8,但仍然不起作用


Tags: 数据fromdfindexobjectnanoutcategory
1条回答
网友
1楼 · 发布于 2024-06-25 23:20:56

修好了! 很奇怪。我确实指定要将excel文件保存在utf-8编码中,但当我尝试将其导出到csv时,生成的文件有一大堆ÿ字符。例如,我试图找到的ÿTD3型ÿ

我很快用查找和替换删除所有特殊字符,保存csv和现在合并的作品,如预期的

相关问题 更多 >