Python 在dataframe上迭代只返回列标题

Python 在dataframe上迭代只返回列标题,python,pandas,matplotlib,dataframe,plot,Python,Pandas,Matplotlib,Dataframe,Plot,我试图从包含地震数据的csv中提取纬度、经度、震级和时间,以便将它们绘制成地图 我目前提取数据的代码是: import pandas as pd csv_path = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv' filename = pd.read_csv(csv_path, names = ['time','latitude','longitude','mag']) lats, lons =

我试图从包含地震数据的csv中提取纬度、经度、震级和时间,以便将它们绘制成地图

我目前提取数据的代码是:

import pandas as pd

csv_path = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv'
filename = pd.read_csv(csv_path, names = ['time','latitude','longitude','mag'])
lats, lons = [], []
magnitudes = []
timestrings = []

for row in filename:
    print (row)
    lats.append(row[1])
    lons.append(row[2])
    magnitudes.append(row[2])
    timestrings.append(row[0])

# Printing this to check if the values are correctly imported
# This is, instead, printing the second letter of each word
print('lats', lats[0:5])
print('lons', lons[0:5])
但我的输出是:

time
latitude
longitude
mag
lats ['i', 'a', 'o', 'a']
lons ['m', 't', 'n', 'g']

很抱歉,如果以前回答过这个问题,我试图查找它,但在代码中找不到我找到的答案。

您有一个pandas数据框,而不是一个文件。数据帧上的迭代为您提供系列的标题:

这些名称是您传递到
read\u csv
调用中的名称,但它们不是过滤器。我不会在这里使用
名称
,让Pandas找出有哪些列,然后从中选择:

>>> df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
>>> df.time
0    2017-09-12T22:13:27.650Z
Name: time, dtype: object
>>> df.latitude
0    58.0241
Name: latitude, dtype: float64
>>> df.longitude
0   -32.3543
Name: longitude, dtype: float64
>>> df.mag
0    4.8
Name: mag, dtype: float64
我使用了一个更常见的
df
名称来反映这是一个数据帧

只有一行,因此您可以通过将每个系列转换为列表来获取数据,并生成单个值:

df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
time = df.time.tolist()
lats = df.latitude.tolist()
longs = df.longitude.tolist()
magnitudes = df.mag.tolist()

但是,如果您想打印数据,可以直接从数据框中打印,而无需手动提取列表。请参阅。

文件名
是一个数据帧。这不是文件。也许您正在寻找一个
csv.reader()
对象?如果我将代码更改为:“csv\u数据中的行的csv\u data=csv.reader(文件名):…“我得到”文件--------第12行,在lats.append(行[1])索引器中:列表索引超出范围
csv.reader()
接受一个文件对象或iterable。而不是文件名。迭代一个
pd.DataFrame
会得到它的列的名称。现在我看到了区别。我仍然很难处理像这样的所有细节。谢谢!或者更好的是,保持DataFrame完整!@juanpa.arrivillaga我现在链接到可视化教程。谢谢非常感谢大家的关注!我在大家的帮助下成功地让它工作了,但是你的帖子是eureka!在解决这个问题的过程中,我确实学到了很多。
df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
time = df.time.tolist()
lats = df.latitude.tolist()
longs = df.longitude.tolist()
magnitudes = df.mag.tolist()