gpt4 book ai didi

Python/ Pandas : Create column in appended file based on Excel cell

转载 作者:行者123 更新时间:2023-12-01 09:07:49 26 4
gpt4 key购买 nike

我将多个 Excel 文件中的信息附加到一个数据框中。每个 Excel 文件具有相同的结构,但对应不同的城市。城市名称始终位于同一单元格 (C2) 中。

如何提取每个文件中的城市名称,使其显示为新创建的数据框中相应行的列?

我附加的数据框如下所示:

 Col1     Col2      
40 34
104 108
23 1
43 21

因此,我无法判断哪些行属于文件 X 或文件 Y。理想情况下,我希望有一个数据框,例如:

Col1   Col2     Col3      
City A 40 34
City A 104 108
City B 23 1
City B 43 21

我不确定在追加 Excel 文件以添加相应的城市列之前是否应该直接编辑/写入 Excel 文件。或者我是否应该在附加到我的数据框之后或过程中执行此操作。

任何指导都会很棒。

编辑:这是我重现 Excel 工作表结构的最佳尝试。请注意,A 列和第 5、6 和 7 行为空白。城市名称位于第 2 行 C 列。

我想要提取第 8 行到第 11 行中的信息,并将单元格 C3 中的城市名称添加为这些行旁边的列。

     ColA     ColB       ColC     ColD  ColE  ColF ColG
Row1 Type XYZ
Row2 CityName XXX
Row3 CityCode 10
Row4 RYear 13
Row5
Row6
Row7
Row8 Rank Cat. 88 89 90 91
Row9 11 A 111 106 102 101
Row10 12 B 121 144 126 121
Row11 13 C 100 107 100 101

Edit2:按照ALollz的建议,我尝试了以下代码,但没有成功。我收到错误“‘DataFrame’对象没有属性‘ColC’”。请注意,files_xlsx 是一个包含所有 Excel 文件的列表。

all_data = pd.DataFrame()

for f in files_xlsx:
city_name = pd.read_excel(f, "SheetA", nrows=2).ColC[1]
data = pd.read_excel(f, "SheetA", parse_cols="B:J")
data['col_city'] = city_name
all_data = all_data.append(data,ignore_index=True)

Edit3:不断尝试,终于找到了可行的东西。唯一的问题是 cityname 仅设置为一行而不是整列,这正是我想要的。有什么帮助吗?

  df = pd.DataFrame()

for f in files_xlsx:
city_name = pd.read_excel(f, "Sheet1", nrows=2, parse_cols="C", header=None, skiprows=1, skip_footer=264)
data = pd.read_excel(f, "Sheet1", parse_cols="B:J", header=None, skiprows=8)
data['City'] = city_name
df = df.append(data)

最佳答案

您可以使用nrows=1仅读取一个元素df的一个值,然后通过DataFrame.iat选择值:

f = 'file.xlsx'
city_name = pd.read_excel(f, "Sheet1", nrows=1, parse_cols="C", header=None, skiprows=1)
print (city_name)
0
0 XXX

data = pd.read_excel(f, "Sheet1", parse_cols="B:J", header=None, skiprows=8)
data['City'] = city_name.iat[0,0]
print (data)
0 1 2 3 4 5 City
0 11 A 111 106 102 101 XXX
1 12 B 121 144 126 121 XXX
2 13 C 100 107 100 101 XXX

循环中:

dfs = []
for f in files_xlsx:
city_name = pd.read_excel(f, "Sheet1", nrows=1, parse_cols="C", header=None, skiprows=1)
data = pd.read_excel(f, "Sheet1", parse_cols="B:J", header=None, skiprows=8)
data['City'] = city_name.iat[0,0]
dfs.append(data)

df = pd.concat(dfs, ignore_index=True)

关于Python/ Pandas : Create column in appended file based on Excel cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902037/

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