gpt4 book ai didi

python - 合并数据框中的值以在 excel 中写入

转载 作者:行者123 更新时间:2023-11-28 18:10:10 25 4
gpt4 key购买 nike

我有一个看起来像的数据框

       column1    column2     column3    colum4  column5 
1 r_n_1 r_s_1 r_n_2 r_s_3 r_n_3
2 r_n_1 r_s_1 r_n_4 r_s_4 r_n_5
3 r_n_1 r_s_1 r_n_6 r_s_5 r_n_7
4 r_n_1 r_s_1 r_n_6 r_s_6 r_n_9
5 r_n_10 r_s_7 r_n_11 r_s_8 r_n_12
6 r_n_10 r_s_9 r_n_11 r_s_10 r_n_13

我想合并数据框中的单元格,这样我就可以在 excel 中编写看起来像 enter image description here 的内容

所以基本上合并在 excel 中具有相同值的单元格。我想我可以 使用 Pandas 的 MultiIndex 但我不知道该怎么做。

我获取这个数据框的代码是这样的。

 new_list = []
for k1 in remove_empties_from_dict(combined_dict):
curr_dict = remove_empties_from_dict(combined_dict)[k1]
for k2 in curr_dict:
curr_dict_2=curr_dict[k2]
for k3 in curr_dict_2:
curr_dict_3=curr_dict_2[k3]
for k4 in curr_dict_3:
curr_dict_4=curr_dict_3[k4]
new_dict= {'c1': k1, 'c2': k2, 'c3': k3, 'c4': k4,'c5': curr_dict_4}
new_list.append(new_dict)
df = pd.DataFrame(new_list)

最佳答案

我找不到一个直接函数来合并具有相似值的单元格,所以我编写了一个代码来执行此操作。

print(df)

column1 column2 column3 column4 column5
0 r_n_1 r_s_1 r_n_2 r_s_3 r_n_3
1 r_n_1 r_s_1 r_n_4 r_s_4 r_n_5
2 r_n_1 r_s_1 r_n_6 r_s_5 r_n_7
3 r_n_1 r_s_1 r_n_6 r_s_6 r_n_9
4 r_n_10 r_s_7 r_n_11 r_s_8 r_n_12
5 r_n_10 r_s_9 r_n_11 r_s_10 r_n_13

这是我必须使用的 df。但为了做到这一点,我所做的是,我迭代了一次以检查哪些值相似,并将 替换为 -。我没有将其设为 NoneType 的原因是表格下方的单元格具有 NoneType 值,因此代码的后续部分将继续无限迭代。我所做的是:

for i in df.columns:
for j in range(len(df[i])):

for k in range(j+1,len(df[i])):
if df[i][j]== df[i][k]:
df[i][k]='-'

所以现在我的 df 看起来像这样:

print(df)

column1 column2 column3 column4 column5
0 r_n_1 r_s_1 r_n_2 r_s_3 r_n_3
1 - - r_n_4 r_s_4 r_n_5
2 - - r_n_6 r_s_5 r_n_7
3 - - - r_s_6 r_n_9
4 r_n_10 r_s_7 r_n_11 r_s_8 r_n_12
5 - r_s_9 - r_s_10 r_n_13

既然我在数据框中拥有所有唯一值,我将检查 df 元素是有效输入还是 -。并且 - 的单元格将与其上限值合并。我通过以下方式做到了:

from openpyxl.workbook import Workbook    
exportPath = r'C:\Users\T01144\Desktop\PythonExport.xlsx'

wb= Workbook()
ws=wb.active
rowInd=1
colInd=1
colList=['-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I'] # Continue if there are more columns

for i in df.columns:
for j in range(0,len(df[i])):
if(df[i][j]!='-'):
ws.cell(row=rowInd,column=colInd,value=df[i][j])
else:
count=0
for l in range(j+1,len(df[i])):
count+=1
if df[i][l]!='-':
count-=1
break
ws.merge_cells(str(str(colList[colInd]+str(rowInd-1))+":"+str(colList[colInd]+str(rowInd+count))))
rowInd+=1

colInd+=1
rowInd=1

我现在的输出是:

Excel Output

整个代码可以找到here .

注意:有些人可能会在创建 Excel 后遇到此错误:

We found a problem with some content in 'PythonExport.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes.

忽略此错误并单击"is"。

关于python - 合并数据框中的值以在 excel 中写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172234/

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