python用法 - python dataframe篩選




按索引合併兩個數據幀 (4)

一個愚蠢的錯誤讓我:連接失敗,因為索引dtypes不同。 這並不明顯,因為兩個表都是同一個原始表的數據透視表。 在reset_index之後,jupyter中的索引看起來相同。 只有在保存到excel時才會曝光......

修正: df1[['key']] = df1[['key']].apply(pd.to_numeric)

希望這可以節省一個小時!

嗨,我有以下數據幀:

> df1
  id begin conditional confidence discoveryTechnique  
0 278    56       false        0.0                  1   
1 421    18       false        0.0                  1 

> df2
   concept 
0  A  
1  B

如何合併索引以獲得:

  id begin conditional confidence discoveryTechnique   concept 
0 278    56       false        0.0                  1  A 
1 421    18       false        0.0                  1  B

我問,因為我的理解是 merge()df1.merge(df2) 使用列來進行匹配。 事實上,這樣做我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4618, in merge
    copy=copy, indicator=indicator)
  File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 58, in merge
    copy=copy, indicator=indicator)
  File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 491, in __init__
    self._validate_specification()
  File "/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py", line 812, in _validate_specification
    raise MergeError('No common columns to perform merge on')
pandas.tools.merge.MergeError: No common columns to perform merge on

合併索引是不好的做法? 這不可能嗎? 如果是這樣,我如何將索引轉換為名為“index”的新列?

謝謝


你可以使用 concat 來連接兩個或多個由索引對齊的DF:

pd.concat([df1, df2, df3, ...], axis=1)

merge 以通過自定義字段/索引連接:

# join by _common_ columns: `col1`, `col3`
pd.merge(df1, df2, on=['col1','col3'])

# join by: `df1.col1 == df2.index`
pd.merge(df1, df2, left_on='col1' right_index=True)

或通過索引 join 加入:

 df1.join(df2)

如果你想在pandas中加入兩個數據幀,你可以簡單地使用像 mergeconcatenate 這樣的可用屬性。 例如,如果我有兩個數據幀 df1df2 我可以通過以下方式加入它們:

newdataframe=merge(df1,df2,left_index=True,right_index=True)

默認情況下:
join是一個列式左連接
pd.merge是一個列式內連接
pd.concat是一個行方式的外連接

pd.concat:
採用Iterable參數。 因此,它不能直接採用DataFrames(使用[df,df2])
DataFrame的尺寸應沿軸匹配

加入和pd.merge:
可以採用DataFrame參數







concat