我有下面的表格,我想按预期的输出排序如下。如何使用Python执行。表格是Excel / csv格式。 ?
我想将column1数据与Column2数据进行匹配,并希望添加具有如下所示排序数据的新2列(5&6)。
如何使用python执行上述操作?
答案 0 :(得分:2)
您的问题似乎正在尝试做两件事:
对于#1,您可以使用类似Python's xlrd的东西,或者还有其他几个xls(x)解析器。
我将从此开始,看看是否可以将数据导入python。看起来像这样:
import xlrd
# open your workbook
wb = xlrd.open_workbook('mybook.xlsx')
sh = wb.sheet_by_index(0)
# now go through the rows and do what you want with them
for x in range(sh.nrows):
for y in range(sh.ncols):
value = sh.cell(x,y).value
# and do something with this value.
我希望以上内容能帮助您开始进行以上操作。
答案 1 :(得分:2)
其中一种方法如下,
根据您的逻辑创建一个空的数据框并附加匹配的列值
将创建的数据框与原始数据框合并。
我已尝试使用您的示例数据,并按以下步骤操作:
import pandas as pd
dat = pd.read_excel(<location_to_file>) # Reading excel in to pandas
dat = pd.DataFrame(dat) # Converting to a pandas dataframe
dat1 = pd.DataFrame([])
for n in range(dat.shape[0]):
for m in range(dat.shape[0]):
if dat['Col1'][n] == dat['Col2'][m]:
dat1 = dat1.append(pd.DataFrame({'Column5': dat.iloc[m][2], 'Column6': dat.iloc[m][3]}, index=[0]), ignore_index=True)
# print(dat1)
df = pd.concat([dat, dat1], axis=1)
print(df)
输入(作为数据框):
Col1 Col2 Col3 Col4
0 ABC DEF 12 DGMN
1 PQR MNO 17 DGSD
2 DEF JPG United DGFS
3 JPG PQR 21Hi DFPR
4 SQL STF STM DGBC
5 PQR YZW Hello90 DGSF
6 MNO ABC DQT DGCV
7 STF SQL A18B DGFD
中间/临时数据帧:
Column5 Column6
0 DQT DGCV
1 21Hi DFPR
2 12 DGMN
3 United DGFS
4 A18B DGFD
5 21Hi DFPR
6 17 DGSD
7 STM DGBC
输出(df):
Col1 Col2 Col3 Col4 Column5 Column6
0 ABC DEF 12 DGMN DQT DGCV
1 PQR MNO 17 DGSD 21Hi DFPR
2 DEF JPG United DGFS 12 DGMN
3 JPG PQR 21Hi DFPR United DGFS
4 SQL STF STM DGBC A18B DGFD
5 PQR YZW Hello90 DGSF 21Hi DFPR
6 MNO ABC DQT DGCV 17 DGSD
7 STF SQL A18B DGFD STM DGBC
尽管可以通过对操作进行矢量化来进一步改善此代码段的性能。希望这可以帮助您入门。
注意 请显示您在解决/解决发布问题方面的研究成果。那会激励SO成员帮助您。