【发布时间】:2019-12-05 06:52:33
【问题描述】:
我基本上想从导入的数据框中消除相反的数量。
我的解决方案是构建一个新的数据框,忽略成对组合的总和为零的行。
考虑以下数据框:
df = pd.DataFrame([
['31/07/17', 43020500, 13552.65],
['31/07/17', 43020500, 13552.65],
['31/07/17', 43020500, 13552.65],
['31/07/17', 43020500, 13552.65],
['31/08/17', 43020500, 241024.48],
['31/08/17', 43020500, 241024.48],
['31/08/17', 43020500, 241024.48],
['31/08/17', 43020500, 241024.48],
['31/08/17', 43020500, 241024.48],
['31/08/17', 43020500, -13552.65],
['31/08/17', 43020500, -13552.65],
['31/08/17', 43020500, -13552.65],
['31/08/17', 43020500, -13552.65],
['31/08/17', 43020500, -13552.65],
['30/06/17', 43020500, 133540.13],
], columns = ['Data', 'Account','Amount']
)
df
Out[34]:
Data Account Amount
0 31/07/17 43020500 13552.65
1 31/07/17 43020500 13552.65
2 31/07/17 43020500 13552.65
3 31/07/17 43020500 13552.65
4 31/08/17 43020500 241024.48
5 31/08/17 43020500 241024.48
6 31/08/17 43020500 241024.48
7 31/08/17 43020500 241024.48
8 31/08/17 43020500 241024.48
9 31/08/17 43020500 -13552.65
10 31/08/17 43020500 -13552.65
11 31/08/17 43020500 -13552.65
12 31/08/17 43020500 -13552.65
13 31/08/17 43020500 -13552.65
14 30/06/17 43020500 133540.13
预期结果是由索引 4 到 8、13 和 14 组成的新数据框,但我的代码无法正常工作...
import numpy as np
import pandas as pd
pd.options.display.float_format = '{:,.2f}'.format
df = pd.read_excel('ContractAssets_copy.XLSX')
df.sort_values('Date')
dfToList = df['Amount'].tolist()
newdf = []
def index(a_list, value):
try:
return a_list.index(value)
except ValueError:
return None
for number in dfToList:
key = index(dfToList, dfToList[number] * -1)
if key == None:
newdf.append(df[number])
newdf
我该如何解决这个问题?
【问题讨论】:
标签: python pandas list indexing find