python - 反转熊猫数据框并连接结果
问题描述
我有一个两列熊猫数据框
source | target
----------------
1 3
2 4
2 1
这表示图的边缘列表。就目前而言,该图是有向的。我想将其转换为无向图,因此我需要“互补”边,从而获得:
source | target
----------------
1 3
3 1
2 4
4 2
2 1
1 2
有什么方法可以直接在 Pandas 中执行此操作,而无需使用图形库,例如 networkx?
解决方案
有什么方法可以直接在 Pandas 中执行此操作,而不使用图形库,例如 networkx
我们可以使用反转df df.iloc
,然后使用追加df.append
out = df.append(pd.DataFrame(df.iloc[:,::-1].to_numpy(),index=df.index
,columns=df.columns)).sort_index().reset_index(drop=True)
或使用np.flip
:
(df.append(pd.DataFrame(np.flip(df.to_numpy(),axis=1),
index=df.index,columns=df.columns)).sort_index().reset_index(drop=True))
print(out)
source target
0 1 3
1 3 1
2 2 4
3 4 2
4 2 1
5 1 2
注意:如果有更多列,您可以将数据框的子集作为sub_df = df[['source','target']]
并替换df
为sub_df
i 代码。
@ShubhamSharma 提出的另一个想法使用set_axis
它动态重命名列:
(df.append(df.iloc[:, ::-1].set_axis(df.columns, 1,inplace=False))
.sort_index().reset_index(drop=True))
推荐阅读
- windows - USB 可启动设备未显示
- reactjs - 我如何限制用户不使用带有反应和打字稿的输入类型文件选择其他文件类型?
- vagrant - Laravel宅基地符号链接在Windows 10上不起作用
- python - 在列表中查找元素
- node.js - CORS 在 Safari 中阻止一个 API 请求(而不是其他请求)
- javascript - uniquewith 从第一个数组 loadash 返回单个元素
- r - 闪亮::updateDateRangeInput() 的问题
- batch-processing - Mulesoft 批处理崩溃
- r - 每天时间戳之间的差异,在 R 中有一个晚上的休息时间
- angular - Highcharts 可拖动点 - 防止隐藏工具提示