python - 如何根据标题名称移动 csv 中的数据并将其移动到同一列?

标签 python pandas

我有一个包含机场数据的 csv 文件,如下所示:

Name     | State | Runway | data1 | data2 | data3 | Runway | data1 | data2 | data3 | etc
------------------------------------------------------------------------------------
Abu Dabi | UAE   | 01     | 9292  | 2229  | 8282  | 02     | 9929  | 9922  | 2828  | etc

我怎样才能把它改成这样:

Name     | State | Runway | data1 | data2 | data3 |
---------------------------------------------------
Abu Dabi | UAE   | 01     | 9292  | 2229  | 8282  |
                 | 02     | 9929  | 9922  | 2828  |
                 | etc    | etc   | etc   | etc   |

谢谢。

最佳答案

这是一个带有 groupby 列名和 concat 的:

# if you start from your csv
# pandas will rename repeated columns
# e.g. you would have Runway, Runway.1,...
df = pd.read_csv('data.csv')

# fix repeated column names:
df.columns = [col.split('.')[0] for col in df.columns]

new_df = df.set_index(['Name','State'])
pd.concat(g for x,g in new_df.groupby((new_df.columns =='Runway').cumsum(),
                                      axis=1))

输出:

                Runway  data1  data2  data3
Name     State                             
Abu Dabi UAE         1   9292   2229   8282
         UAE         2   9929   9922   2828

关于python - 如何根据标题名称移动 csv 中的数据并将其移动到同一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56927943/

相关文章:

python - 在 Django 中使用大量的 try... except 来记录每个错误

python - 使用 groupby 的键创建另一列 pandas python

python - 如何抓取带有无限滚动条的网站?

python - Pandas Dataframe 到嵌套 JSON

python - Pandas bool 值 .any() .all()

python - 提高多段落扫描的 OCR 性能

python - 您如何为用户定义的对象定义类似字典的赋值?

python - 在 csv 文件中打印新列,该列与另一列之前的两个索引存在差异

Python 对数组的每一列应用函数

python - 将单元测试与 Django 结合使用的最佳方法