python - 如何在 Python 中更改 Pandas Dataframe 的结构?

标签 python pandas dataframe

我有一个以下格式的当前 Pandas DataFrame(请参阅当前 DataFrame),但我想更改它的结构,使其看起来像下面所需的 DataFrame。标题的顶行是经度,标题的第一列是纬度。

当前数据框:

       E0    E1    E2    E3    E4
LAT                              
89   0.01  0.01  0.02  0.01  0.00
88   0.01  0.00  0.00  0.01  0.00
87   0.00  0.02  0.01  0.02  0.01
86   0.02  0.00  0.03  0.02  0.00
85   0.00  0.00  0.00  0.01  0.03

构建它的代码:

df = pd.DataFrame({
    'LAT': [89, 88, 87, 86, 85],
    'E0': [0.01, 0.01, 0.0, 0.02, 0.0],
    'E1': [0.01, 0.0, 0.02, 0.0, 0.0],
    'E2': [0.02, 0.0, 0.01, 0.03, 0.0],
    'E3': [0.01, 0.01, 0.02, 0.02, 0.01],
    'E4': [0.0, 0.0, 0.01, 0.0, 0.03]
}).set_index('LAT')

所需的数据帧:

LAT  LON     R
 89    0  0.01 
 89    1  0.01
 89    2  0.02
 89    3  0.01
 89    4  0.00
 88    0  0.01
 88    1  0.00
 88    2  0.00
 88    3  0.01
 88    4  0.00
 87    0  0.00
 87    1  0.02
 87    2  0.01
 87    3  0.02
 87    4  0.01
 86    0  0.02
 86    1  0.00
 86    2  0.03
 86    3  0.02
 86    4  0.00
 85    0  0.00
 85    1  0.00
 85    2  0.00
 85    3  0.01
 85    4  0.03

最佳答案

尝试使用 stack + str.extract :

new_df = (
    df.stack()
        .reset_index(name='R')
        .rename(columns={'level_1': 'LON'})
)
new_df['LON'] = new_df['LON'].str.extract(r'(\d+$)').astype(int)

或者使用 pd.wide_to_long + reindex :

new_df = df.reset_index()
new_df = (
    pd.wide_to_long(new_df, stubnames='E', i='LAT', j='LON')
        .reindex(new_df['LAT'], level=0)
        .rename(columns={'E': 'R'})
        .reset_index()
)

new_df:

    LAT  LON     R
0    89    0  0.01
1    89    1  0.01
2    89    2  0.02
3    89    3  0.01
4    89    4  0.00
5    88    0  0.01
6    88    1  0.00
7    88    2  0.00
8    88    3  0.01
9    88    4  0.00
10   87    0  0.00
11   87    1  0.02
12   87    2  0.01
13   87    3  0.02
14   87    4  0.01
15   86    0  0.02
16   86    1  0.00
17   86    2  0.03
18   86    3  0.02
19   86    4  0.00
20   85    0  0.00
21   85    1  0.00
22   85    2  0.00
23   85    3  0.01
24   85    4  0.03

关于python - 如何在 Python 中更改 Pandas Dataframe 的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67953698/

相关文章:

python - 如何在没有弃用函数的情况下迭代 tf.dataset?

python - Python 的 optparse 可以显示选项的默认值吗?

python - 抓取多个页面时经常出现 HTTP 错误 413

python按列拆分pd数据框

python - Pyomo CBC 求解器错误 : Solver (cbc) returned non-zero return code (3221225781); Solver (cbc) did not exit normally

python - 在 shell 脚本中检测 python 版本

python - 如何在 pandas DataFrame 中展平 JSON 数组元素

python - 从数据框中的列表中重命名列中的值

python - Pandas DataFrame - 所需索引具有重复值

python - 如何将 pandas 列中的浮点值离散为 [1, 10]