python - 如何将数据帧转换为“从-到”对?

标签 python pandas transformation shift

如果我有一个数据框:

>>> import pandas as pd
>>> df = pd.DataFrame([
...     ['A', 'B', 'C', 'D'],
...     ['E', 'B', 'C']
... ])
>>> df
   0  1  2     3
0  A  B  C     D
1  E  B  C  None
>>>  

我应该将数据框转换为两列格式:

x, y
-----
A, B
B, C
C, D
E, B
B, C

对于每一行,从左到右,取两个邻居值并使其成为一对。 如果您将每一行视为一条路径,那么它有点从到到。

如何进行转型?

最佳答案

我们可以使用 zip 进行explode

s=pd.DataFrame(df.apply(lambda x : list(zip(x.dropna()[:-1],x.dropna()[1:])),axis=1).explode().tolist())
Out[336]: 
   0  1
0  A  B
1  B  C
2  C  D
3  E  B
4  B  C

更新

s=df.apply(lambda x : list(zip(x.dropna()[:-1],x.dropna()[1:])),axis=1).explode()
s=pd.DataFrame(s.tolist(),index=s.index)

s
Out[340]: 
   0  1
0  A  B
0  B  C
0  C  D
1  E  B
1  B  C

关于python - 如何将数据帧转换为“从-到”对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62271437/

相关文章:

python - 捕获导入模块中引发的异常

python - 如何从函数内部访问变量

python - 潜在错误 : pandas MultiIndex and 0-d sized values

python - 删除值计数满足条件的列 (Pandas)

python - Pandas:计算与 pivot_table 或 crosstab 的重叠

python - 使用 Python 和 Pandas 访问 JSON 元素

python - 寻找更快的方法来迭代 pandas 数据框

java - spring - xsl 转换 dtd 未找到错误

PHP以指数形式输出数字