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

标签 python mysql pandas

我正在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/

相关文章:

python - 使用条件 python 查找最小值

python - Y channel 的高斯模糊图像直方图

mysql - 需要执行 MySQL OUTER JOIN

python - 将雅虎财经日期设置为数据框索引

python - 为 Pandas 中缺失的数据组合添加值

python - 写入(自定义)将 Pandas 行转换为 python 中的列

python - TensorFlow 可以在多个 CPU 上运行(没有 GPU)吗?

c# - DataTable 不接受 MySQL 表中的 DateTime 字段

c# - 尝试插入 MS Access DB 时 ASP.NET 出现错误

python - Pandas 按连续数字分组