【问题标题】:Iterate over rows of Pandas dataframe遍历 Pandas 数据框的行
【发布时间】:2018-09-26 12:29:18
【问题描述】:

我有 df 喜欢:

CELLID  lon       lat         METER           LATITUDE_SM LONGITUDE_SM  Path_ID
2557709 5.286339 51.353820 E0047000004028217  51.3501      5.3125    2557709_E0047000004028217

对于每个 Path_ID(str) 我想迭代循环并希望实现 df1 像:

Path_ID                    METER          LATITUDE_SM  LONGITUDE_SM
2557709_E0047000004028217 E0047000004028217  51.3501    5.3125 
Path_ID                   CELLID            Lon           lat
2557709_E0047000004028217 2557709         5.286339     51.353820

我在 df 中有很多行。 我正在做类似的事情

for row in df.iterrows():
    print row ['Path_ID'],row['METER'],row['LATITUDE_SM'], row ['LONGITUDE_SM']

【问题讨论】:

  • 如果您已经拥有df,为什么还要使用循环打印出来? print(df) 还不够吗?
  • 我想获得 path_ID 的纬度经度,以及相同的 path_id 纬度经度的 CELLID。所以基本上把它分成两个原始数据帧
  • 如果你真的想逐行打印,看jpp的解决方案。但是你可以通过打印数据框的一个子集来节省很多时间,你可以在其中分割你想要的列。以print(df[['Path_ID', 'CEILID', 'Lon', 'lat']]) 为例

标签: python pandas loops dataframe


【解决方案1】:

很难理解你的目标,但是 IIUC,你想按 Path_ID 分组并打印每个值

grouped_df= df.groupby("Path_ID")[["Path_ID", "METER", "LATITUDE_SM", "LONGITUDE_SM"]]
for key, val in grouped_df:
    print grouped_df.get_group(key), "\n"

输出

                     Path_ID              METER  LATITUDE_SM  LONGITUDE_SM
0  2557709_E0047000004028217  E0047000004028217        51.35        5.3125 

【讨论】:

    【解决方案2】:

    目前尚不清楚您为什么想要这种行为,但您可以通过 pd.DataFrame.iloc 实现此目的。

    如果您只需要特定的列,请将: 替换为列号列表。

    import pandas as pd, numpy as np
    
    df = pd.DataFrame(np.random.random((5, 5)))
    
    for i in range(len(df.index)):
        print(df.iloc[[i], :])
    
    #           0         1         2         3         4
    # 0  0.587349  0.947435  0.974285  0.498303  0.135898
    #           0         1         2         3         4
    # 1  0.292748  0.880276  0.522478  0.081902  0.187494
    #           0         1         2         3         4
    # 2  0.692022  0.908397  0.200202  0.099722  0.348589
    #           0         1         2         3         4
    # 3  0.041564  0.980425  0.899634  0.725757  0.569983
    #           0         1         2         3         4
    # 4  0.787038  0.000077  0.213646  0.444095  0.022923
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 2022-01-20
      • 2021-04-05
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      • 2017-10-23
      • 2020-11-11
      相关资源
      最近更新 更多