python - Python pandas数据框删除索引名称不出现在其他数据框中的行
问题描述
我有两个数据框。我想删除两个数据帧中都没有出现索引的行。
以下是数据框的示例:
import pandas as pd
data = {'Correlation': [1.000000, 0.607340, 0.348844]}
df = pd.DataFrame(data, columns=['Correlation'])
df = df.rename(index={0: 'GINI'})
df = df.rename(index={1: 'Central government debt, total (% of GDP)'})
df = df.rename(index={2: 'Grants and other revenue (% of revenue)'})
data_2 = {'Correlation': [1.000000, 0.607340, 0.348844, 0.309390, -0.661046]}
df_2 = pd.DataFrame(data_2, columns=['Correlation'])
df_2 = df_2.rename(index={0: 'GINI'})
df_2 = df_2.rename(index={1: 'Central government debt, total (% of GDP)'})
df_2 = df_2.rename(index={2: 'Grants and other revenue (% of revenue)'})
df_2 = df_2.rename(index={3: 'Compensation of employees (% of expense)'})
df_2 = df_2.rename(index={4: 'Central government debt, total (current LCU)'})
我发现了这个问题:如果同一行存在于另一个数据框中,如何删除 Pandas 数据框中的行?但如果索引名称相同,则无法使用它,因为我试图删除它。
我也看到了这个问题:pandas 获取不在其他数据框中的行,但删除了两个数据框中相等的行,但我也没有发现这很有用。
我想做的是转置然后连接数据帧并删除重复的列:
df = df.T
df_2 = df_2.T
df3 = pd.concat([df,df_2],axis = 1)
df3.iloc[: , ~df3.columns.duplicated()]
这样做的问题是它只删除了重复的列之一,但我希望它删除这两个列。
对此的任何帮助将不胜感激,干杯。
解决方案
您可以只比较索引并用于.loc
提取相关行:
In [19]: df1 = pd.DataFrame(list(range(50)), index=range(0, 100, 2))
In [20]: df2 = pd.DataFrame(list(range(34)), index=range(0, 100, 3))
In [21]: df2.loc[df2.index.difference(df1.index)]
Out[21]:
0
3 1
9 3
15 5
21 7
27 9
33 11
39 13
45 15
51 17
57 19
63 21
69 23
75 25
81 27
87 29
93 31
99 33
推荐阅读
- javascript - 我可以使用 JQuery 来执行在 ajax 成功块中创建的 html 元素的操作吗?
- android - 即使在调用 AlarmManager.cancel(pendingIntent) 后警报也没有停止
- mysql - 通过 SSH 隧道连接 MySQL
- asciidoc - 不紧跟在扉页之后放置目录
- css - 可合并选择器 SCSS-lint
- animation - 抑制动画两侧的黑色边距
- postgresql - 从边界框(内部和重叠)中提取几何图形并将结果复制到新的空数据库
- node.js - npm 无缘无故安装可选依赖项“chromedriver”
- matlab - 绘制最大值和最小值
- node.js - pkg-config 找不到 gtk+-3.0