【发布时间】:2022-08-17 17:49:07
【问题描述】:
我想知道如何获取在一个列中出现多次的值,该列链接到另一列。 让我用一个例子更好地解释自己: 我有一个包含两列的数据框:\'Provider\' 和 \'PotentialFraud\',在 \'Provider\' 列中,相同的 Provider 代码出现了多次,而在 \'PotentialFraud\' 中它是一个布尔字段。我必须创建另一个数据框,其中在 \'Provider\' 列中每个 Provider 代码仅出现一次,并且在 \'PotentialFraud\' 字段中,如果在第一个带有该代码的 DataFrame 中有更多 True,则显示为 True,否则为 False。
第一个 DataFrame 的示例:
| Provider | PotentialFraud |
|---|---|
| First | True |
| Second | True |
| First | True |
| Second | False |
| Third | False |
| Second | True |
第二个 DataFrame 将是:
| Provider | PotentialFraud |
|---|---|
| First | True |
| Second | True |
| Third | False |
我试着写这段代码:
final_provider_dataset = pd.DataFrame(columns=[\'Provider\', \'PotentialFraud\'])
for provider in provider_test_dataset[\'Provider\'].unique():
potential_fraud_true = provider_test_dataset[provider_test_dataset[\'Provider\'] == provider] [\'PotentialFraud\'].value_counts()[True]
potential_fraud_false = provider_test_dataset[provider_test_dataset[\'Provider\'] == provider] [\'PotentialFraud\'].value_counts()[False]
if potential_fraud_true > potential_fraud_false:
final_provider_dataset = final_provider_dataset.append({\'Provider\': provider, \'PotentialFraud\': True}, ignore_index=True)
else:
final_provider_dataset = final_provider_dataset.append({\'Provider\': provider, \'PotentialFraud\': False}, ignore_index=True)
但是出现了这个错误:
KeyError Traceback (most recent call last)
File ~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pandas\\core\\indexes\\base.py:3621, in Index.get_loc(self, key, method, tolerance)
3620 try:
-> 3621 return self._engine.get_loc(casted_key)
3622 except KeyError as err:
File ~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pandas\\_libs\\index.pyx:136, in pandas._libs.index.IndexEngine.get_loc()
File ~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\pandas\\_libs\\index.pyx:144, in pandas._libs.index.IndexEngine.get_loc()
File pandas\\_libs\\index_class_helper.pxi:41, in pandas._libs.index.Int64Engine._check_type()
KeyError: True
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
*localdirectory*\\main.ipynb Cella 121 in <cell line: 4>()
3 final_provider_dataset = pd.DataFrame(columns=[\'Provider\', \'PotentialFraud\'])
4 for provider in provider_test_dataset[\'Provider\'].unique():
----> 5 potential_fraud_true = provider_test_dataset[provider_test_dataset[\'Provider\'] == provider] [\'PotentialFraud\'].value_counts()[True]
6 potential_fraud_false = provider_test_dataset[provider_test_dataset[\'Provider\'] == provider] [\'PotentialFraud\'].value_counts()[False]
7 if potential_fraud_true > potential_fraud_false:
...
3626 # InvalidIndexError. Otherwise we fall through and re-raise
3627 # the TypeError.
3628 self._check_indexing_error(key)
KeyError: True
我能做些什么?提前致谢。