Python 如何调用熊猫中的各个列?

Python 如何调用熊猫中的各个列?,python,pandas,Python,Pandas,我知道这一定是一个非常基本的问题,但奇怪的是,我在网上阅读的资源似乎不太清楚如何做到以下几点: 如何为pandas中的特定列编制索引 例如,从csv导入数据后,我有一个带有各个日期的pandasSeries对象,以及每个日期对应的美元金额 现在,我想按月份对日期进行分组(并添加给定月份各自的美元金额)。我计划创建一个数组,其中索引列是月份,下一列是该月份的美元金额总和。然后,我将使用此数组并从中创建另一个pandas Series对象 我的问题是,我似乎无法调用当前pandas系列对象中的特定列

我知道这一定是一个非常基本的问题,但奇怪的是,我在网上阅读的资源似乎不太清楚如何做到以下几点:

如何为
pandas
中的特定列编制索引

例如,从csv导入数据后,我有一个带有各个日期的pandas
Series
对象,以及每个日期对应的美元金额

现在,我想按月份对日期进行分组(并添加给定月份各自的美元金额)。我计划创建一个数组,其中索引列是月份,下一列是该月份的美元金额总和。然后,我将使用此数组并从中创建另一个pandas Series对象

我的问题是,我似乎无法调用当前pandas系列对象中的特定列

有什么帮助吗

编辑以添加:

from pandas import Series
from matplotlib import pyplot
import numpy as np

series = Series.from_csv('FCdata.csv', header=0, parse_dates = [0], index_col =0)

print(series)

pyplot.plot(series)
pyplot.show() # this successfully plots the x-axis (date) with the y-axis (dollar amount)

dates = series[0]  # this is where I try to call the column, but with no luck
这是我的数据在csv中的外观:

Dates   Amount
1/1/2015    112
1/2/2015    65
1/3/2015    63
1/4/2015    125
1/5/2015    135
1/6/2015    56
1/7/2015    55
1/12/2015   84
1/27/2015   69
1/28/2015   133
1/29/2015   52
1/30/2015   91
2/2/2015    144
2/3/2015    114
2/4/2015    59
2/5/2015    95
2/6/2015    72
2/9/2015    73
2/10/2015   119
2/11/2015   133
2/12/2015   128
2/13/2015   141
2/17/2015   105
2/18/2015   107
2/19/2015   81
2/20/2015   52
2/23/2015   135
2/24/2015   65
2/25/2015   58
2/26/2015   144
2/27/2015   102
3/2/2015    95
3/3/2015    98

您正在将CSV文件读入一个系列。序列是一维对象-没有与之关联的列。您看到该系列(日期)的索引,可能会认为这是另一列,但事实并非如此

您有两种选择:您可以将其转换为数据帧(通过调用
reset\u index()
到\u frame
或将其作为一个系列使用)

series.resample('M').sum()
Out: 
Dates
2015-01-31    1040
2015-02-28    1927
2015-03-31     193
Freq: M, Name: Amount, dtype: int64
因为您已经有了一个格式为date的索引,所以使用重采样按月分组非常简单,所以我建议将其作为一个系列

series.resample('M').sum()
Out: 
Dates
2015-01-31    1040
2015-02-28    1927
2015-03-31     193
Freq: M, Name: Amount, dtype: int64
但是,您始终可以使用以下命令将其转换为数据帧:

df = series.to_frame('Value')
现在,您可以使用
df['Value']
选择单个列。可以在数据帧和序列上进行重采样:

df.resample('M').sum()
Out: 
            Value
Dates            
2015-01-31   1040
2015-02-28   1927
2015-03-31    193
如果要在绘图中使用索引,可以访问该索引:

series.index  # df.index would return the same
Out: 
DatetimeIndex(['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04',
               '2015-01-05', '2015-01-06', '2015-01-07', '2015-01-12',
               '2015-01-27', '2015-01-28', '2015-01-29', '2015-01-30',
               '2015-02-02', '2015-02-03', '2015-02-04', '2015-02-05',
               '2015-02-06', '2015-02-09', '2015-02-10', '2015-02-11',
               '2015-02-12', '2015-02-13', '2015-02-17', '2015-02-18',
               '2015-02-19', '2015-02-20', '2015-02-23', '2015-02-24',
               '2015-02-25', '2015-02-26', '2015-02-27', '2015-03-02',
               '2015-03-03'],
              dtype='datetime64[ns]', name='Dates', freq=None)   

注意:对于基本的时间序列图,可以使用pandas的绘图工具

df.plot()
生成:

df.resample('M').sum().plot()生成:


您正在将CSV文件读入一个系列。一个系列是一个一维对象,没有与之关联的列。您看到该系列的索引(日期),可能会认为这是另一个列,但事实并非如此

您有两种选择:您可以将其转换为数据帧(通过调用
reset\u index()
到\u frame
或将其作为一个系列使用)

series.resample('M').sum()
Out: 
Dates
2015-01-31    1040
2015-02-28    1927
2015-03-31     193
Freq: M, Name: Amount, dtype: int64
因为您已经有了一个格式为date的索引,所以使用重采样按月分组非常简单,所以我建议将其作为一个系列

series.resample('M').sum()
Out: 
Dates
2015-01-31    1040
2015-02-28    1927
2015-03-31     193
Freq: M, Name: Amount, dtype: int64
但是,您始终可以使用以下命令将其转换为数据帧:

df = series.to_frame('Value')
现在,您可以使用
df['Value']
选择单个列。可以在数据帧和序列上进行重采样:

df.resample('M').sum()
Out: 
            Value
Dates            
2015-01-31   1040
2015-02-28   1927
2015-03-31    193
如果要在绘图中使用索引,可以访问该索引:

series.index  # df.index would return the same
Out: 
DatetimeIndex(['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04',
               '2015-01-05', '2015-01-06', '2015-01-07', '2015-01-12',
               '2015-01-27', '2015-01-28', '2015-01-29', '2015-01-30',
               '2015-02-02', '2015-02-03', '2015-02-04', '2015-02-05',
               '2015-02-06', '2015-02-09', '2015-02-10', '2015-02-11',
               '2015-02-12', '2015-02-13', '2015-02-17', '2015-02-18',
               '2015-02-19', '2015-02-20', '2015-02-23', '2015-02-24',
               '2015-02-25', '2015-02-26', '2015-02-27', '2015-03-02',
               '2015-03-03'],
              dtype='datetime64[ns]', name='Dates', freq=None)   

注意:对于基本的时间序列图,可以使用pandas的绘图工具

df.plot()
生成:

df.resample('M').sum().plot()生成:


我不确定我是否遵守了,但要获得一个月的系列美元金额,您可以执行
pd.groupby(s,by=s.index.month).sum()
其中
s
是您的
序列
对象。序列中也没有列。列用于数据帧。
pd.read\u csv
不应返回
序列
对象,除非数据中只有1列,但您说有1列以上。它应返回允许的
数据帧
对象你可以访问列。你是如何在中读取csv文件的?谢谢你的回答-我会随时用我的代码更新我的问题请发布示例数据请查看更新-谢谢!我不确定我是否遵守,但要获得一个月的美元金额,你可以做
pd.groupby(s,by=s.index.month).sum()
其中
s
是您的
序列
对象。序列中也没有列。列用于数据帧。
pd.read\u csv
不应返回
序列
对象,除非数据中只有1列,但您说有1列以上。它应返回允许的
数据帧
对象您可以访问专栏。您如何阅读中的csv文件?感谢您的回答-我会随时用我的代码更新我的问题请同时发布示例数据请查看更新-谢谢!感谢您的出色回答。您澄清了我的误解,并为我提供了关于备选方案的详细解释。这谢谢你的精彩回答。你澄清了我的误解,并为我提供了详细的备选方案解释。