0

df は pandas によって作成されたオブジェクトで、新しい問題を作成して 2 つの列からのデータだけを JIRA に入力したい 13 列のデータが含まれています。272X13 のオブジェクトです。各列は、JIRA の課題の異なるフィールドを表します。JIRA で作成されたすべての新しい課題は、df の 2 つの列 (概要とコメント) から情報を取得する必要があります。

for ループで各行を処理するときに、2 つの列からすべての値を抽出するにはどうすればよいですか? 各行と列の文字列値のみが必要で、インデックスもオブジェクトも必要ありません。私のコードは以下の通りです:

from jira.client import JIRA
import pandas as pd

df = pd.read_csv('C:\\Python27\\scripts\\export.csv')

# Set the column names from the export.csv file equal to variables using the      
# pandas python module

# Loop to create new issues

for row in df.iterrows():
summ = str(df.loc[row.index, 'Summary'])[:30]
comments = str(df.loc[row.index, 'Comments'])
jira.create_issue(project={'key': 'DEL'}, summary=summ, description=comments, issuetype={'name': 'Bug'})

これを行うと、次のエラーが表示されます。

Traceback (most recent call last):
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\JIRAprocess_Delta.py",    line 86, in <module>
summ = str(df.loc[row.index, 'Summary'])[:30]
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\indexing.py", line 669, in __getitem__
return self._getitem_tuple(key)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\indexing.py", line 252, in _getitem_tuple
return self._getitem_lowerdim(tup)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\indexing.py", line 361, in _getitem_lowerdim
section = self._getitem_axis(key, axis=i)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\indexing.py", line 758, in _getitem_axis
return self._get_label(key, axis=axis)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\indexing.py", line 60, in _get_label
return self.obj._xs(label, axis=axis, copy=True)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\frame.py", line 2281, in xs
loc = self.index.get_loc(key)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\index.py", line 755, in get_loc
return self._engine.get_loc(key)
File "index.pyx", line 130, in pandas.index.IndexEngine.get_loc (pandas\index.c:3238)
File "index.pyx", line 147, in pandas.index.IndexEngine.get_loc (pandas\index.c:3085)
File "index.pyx", line 293, in pandas.index.Int64Engine._check_type (pandas\index.c:5393)
File "C:\Python27\CQPython\cqpython-read-only\src\clearquest\pandas\core\series.py", line 523, in __hash__
raise TypeError('unhashable type')
TypeError: unhashable type
TypeError: unhashable type

以下は、コメント フィールドで作成されたすべての課題について JIRA に表示されるデータの例です。

問題 1:
0 NaN
1 デルタがパケット受信をリークすることが判明しました...
2 切断するたびにデルタがリセットされます...
3 NaN
4 CP が停止するとログに記録されるはずです...
5 経由で IDS をアップグレードすると、 BioMed メニューで...
6 BioMed メニューで IDS を
アップグレードすると... 7 BioMed メニューで IDS をアップグレードすると...
8 Fusion ヒープ サイズと SCC1 Initia の増加...
9再確認ビルド 142+ を使用して、Matt が提供した後 ...
10 WPA2 を使用する場合、EAPOL キー echange go があります...
11 WPA2 を使用する場合、EAPOL key echange go があります...
12 NaN
13 NaN
14 NaN
...

各問題に独自の文字列値を持たせたいだけで、インデックス番号や NaN を次のように表示したくはありません。


問題 1:
問題 2: デルタが受信パケットをリークすることが判明しました...
問題 3: 切断するたびにデルタがリセットされます ...
...

4

1 に答える 1

0

問題は iterrows の使用にあります。

ドキュメントhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iterrows.html ) から、関数 df.iterrows() は DataFrame 行を(index, Series) ペアとして反復処理します。

必要なのは、row.index を "row[0]" に置き換えることです。これにより、繰り返し処理しているデータフレームのインデックスが得られます

for row in df.iterrows():
    summ = str(df.loc[row[0], 'Summary'])[:30]
    comments = str(df.loc[row[0], 'Comments'])

ちなみに、 iterrows はまったく必要ないと思います:

for row_index in df.index:
    summ = str(df.loc[row_index, 'Summary'])[:30]
    comments = str(df.loc[row_index, 'Comments'])
于 2016-06-13T13:45:44.013 に答える