gpt4 book ai didi

python - 如何在Python数据框中按多索引(包括初始数字索引和其他列)进行分组?

转载 作者:行者123 更新时间:2023-11-29 21:39:53 26 4
gpt4 key购买 nike

我正在Python的pd.DataFrame中研究groupby。代码中的任务是我想要对数据进行分组,因为我想确保无论我查询多少次数据并将数据输出到MySQL,它都不会弄乱我的原始数据。

df1=pd.DataFrame(df) #this is a DataFrame with multiple different lines of 'Open' for one 'Symbol'
df2=pd.read_sql('select * from 6openposition',con=conn)
df2=df2.append(df1)
df2=df2.groupby(['Symbol']).agg({'Open':'first'})
df2.to_sql(name='6openposition', con=conn, if_exists='replace', index= False, flavor = 'mysql')

#Example Raw Data:
Symbol Open
0 A 10
1 AA 20
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50

#After I query the data for multiple times(I appended):
Symbol Open
0 A 10
1 AA 20
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50
0 AA 30
1 AAA 40
2 AAA 50
3 AAA 50
4 AAA 60

#How my code ended up with:
Symbol Open
0 A 10
1 AA 20
2 AAA 40

#What I want:
Symbol Open
0 A 10
1 AA 20
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50
6 AAA 60

对于相同的“符号”,我的原始数据在“打开”列中可能有多个值。由于我消除了多次输入MySQL的影响,所以这里的原始数据受到了影响。

我解决这个问题的想法是同时按初始索引和“符号”进行分组,因为追加后初始索引可能是另一个“分组依据”列。初始索引为 [0,1,2,...]。如果“符号”和初始索引相同,我可以采用该组中“开盘”的第一​​个值。要按初始索引分组,我可以:

df2=df2.groupby(level=0).agg({'Open':'first'})
#this code will combine the lines with same indices and take the first value of 'Open' column

但我不知道如何将 'level=0' 与 'level='Symbol'' 结合起来。您能教我如何按两列(包括初始索引和另一列)进行分组吗?或者告诉我一种消除多次输入而不弄乱我的原始数据的方法。

最佳答案

df开始,包括你的index,它似乎表明data是否重复:

  Symbol  Open
0 A 10
1 AA 20
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50

使用

df.reset_index().drop_duplicates().drop('index', axis=1)

(保留第一次出现 by default )以获得:

  Symbol  Open
0 A 10
1 AA 20
2 AA 30
3 AAA 40
4 AAA 50
5 AAA 50

关于python - 如何在Python数据框中按多索引(包括初始数字索引和其他列)进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34622894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com