在Pandas中打印多个列(Python)

时间:2018-12-03 10:49:05

标签: python pandas

我是Python和Pandas模块的新手,但似乎无法正常工作。

这是我的代码。我正在使用一个csv文件,其中包含新加坡的月份和降雨量。

下面是我的代码:

df = pd.read_csv('rainfall-monthly-total.csv')

print ((df['total_rainfall'])[df.total_rainfall == df['total_rainfall'].max()])
print ((df['month'])[df.total_rainfall == df['total_rainfall'].max()])
print ((df['total_rainfall', 'month'])[df.total_rainfall == df['total_rainfall'].max()])

前两个语句可以正常工作。但是第三个出现了问题,我找不到原因。下面是输出。

"/Users/xxxx/PycharmProjects/Phyton for Finance/venv/bin/python" "/Users/xxxx/PycharmProjects/Phyton for Finance/Panda Tutorial.py"
299    765.9
Name: total_rainfall, dtype: float64
299    2006-12
Name: month, dtype: object
Traceback (most recent call last):
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 3078, in get_loc
    return self._engine.get_loc(key)
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: ('total_rainfall', 'month')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/Panda Tutorial.py", line 16, in <module>
    print ((df['total_rainfall', 'month'])[df.total_rainfall == df['total_rainfall'].max()])
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/frame.py", line 2688, in __getitem__
    return self._getitem_column(key)
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/frame.py", line 2695, in _getitem_column
    return self._get_item_cache(key)
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/generic.py", line 2489, in _get_item_cache
    values = self._data.get(item)
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/internals.py", line 4115, in get
    loc = self.items.get_loc(item)
  File "/Users/xxxx/PycharmProjects/Phyton for Finance/venv/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 3080, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: ('total_rainfall', 'month')

Process finished with exit code 1

我在Phyton 3.7中使用PyCharm。 如何让Phyton在该特定月份打印出两列?

2 个答案:

答案 0 :(得分:2)

尝试一下:

print ((df[['total_rainfall', 'month']])[df.total_rainfall == df['total_rainfall'].max()]

您需要将单个方括号转换为双方括号:

['total_rainfall', 'month']

TO

[['total_rainfall', 'month']]

答案 1 :(得分:0)

容易。您需要使用要打印的列的列表。因此,请使用df.loc来过滤条件中的数据框:

print(df.loc[df.total_rainfall == df['total_rainfall'].max(), ['total_rainfall', 'month']])