Python Pandas Dataframe 合并并只选择几列

Posted

技术标签:

【中文标题】Python Pandas Dataframe 合并并只选择几列【英文标题】:Python Pandas Dataframe merge and pick only few columns 【发布时间】:2017-11-19 11:15:56 【问题描述】:

我有一个关于数据框合并的基本问题。在我合并两个 dataframe 之后,有没有办法在结果中只选择几列。

以文档为例

https://pandas.pydata.org/pandas-docs/stable/merging.html#

left = pd.DataFrame('key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                     'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3'])


right = pd.DataFrame('key1': ['K0', 'K1', 'K1', 'K2'],
                          'key2': ['K0', 'K0', 'K0', 'K0'],
                          'C': ['C0', 'C1', 'C2', 'C3'],
                          'D': ['D0', 'D1', 'D2', 'D3'])



result = pd.merge(left, right, on=['key1', 'key2'])

结果如下:

    A   B key1 key2   C   D
0  A0  B0   K0   K0  C0  D0
1  A2  B2   K1   K0  C1  D1
2  A2  B2   K1   K0  C2  D2
None

有没有办法从“正确”数据框中只选择“C”列?例如,我希望我的结果是这样的:

    A   B key1 key2   C  
0  A0  B0   K0   K0  C0  
1  A2  B2   K1   K0  C1  
2  A2  B2   K1   K0  C2  
None

【问题讨论】:

【参考方案1】:
result = pd.merge(left, right[['key1','key2','C']], on=['key1', 'key2'])

right.merge(left, on=['key1','key2'])[['A','B','C','key1','key2']]

【讨论】:

太棒了。我看到您为列过滤了正确的数据框。

以上是关于Python Pandas Dataframe 合并并只选择几列的主要内容,如果未能解决你的问题,请参考以下文章

pandas将dataframe中日期字符串数据列和时间字符串数据列合并成完整时间字符串并使用to_datetime将字符串格式转化为时间格式

python pandas dataframe 写入hdfs

python:pandas之DataFrame取行列(df.loc(),df.iloc())以及索引

Python Pandas -- DataFrame

Python pandas DataFrame的切片取值

利用Python进行数据分析:Pandas(Series+DataFrame)