我正在尝试编写一个函数来遍历包含使用pd.read_html从网站提取的表的数据帧列表。我想在每个数据帧中删除第一行,并尝试使用我在下面编写的函数,但是它不起作用。有人知道为什么吗?
for df in df_list:
df.columns = df.iloc[0]
df.drop(df.index[0])
df_list[0]
**Hospital/Location Specialty**
0 Hospital/Location Specialty
1 Maimonides Med Ctr-NY Maimonides Med Ctr-NY Medicine-Preliminary Anesthesiology
2 Jacobi Med Ctr/Einstein-NY Pediatrics
3 Jacobi Med Ctr/Einstein-NY Pediatrics
4 Temple Univ Hosp-PA Internal Medicine
答案 0 :(得分:1)
您需要将其分配回df。
喜欢这个
df=df.drop(df.index[0])
它从我的数据框中删除了索引0。现在,数据框从索引1开始。
答案 1 :(得分:0)
让我们将其分配回
for idx, df in enumerate(df_list):
df.columns = df.iloc[0]
df_list[idx]=df.drop(df.index[0])
答案 2 :(得分:0)
为什么不使用理解力
# test data:
df1 = pd.DataFrame({0: ['col1', 'A', 'B'], 1: ['col2', '1', '2']})
df2 = pd.DataFrame({0: ['colA', 'a', 'b'], 1: ['colB', 'hello', 'goodbye']})
dfs = [df1, df2]
renamed = [d.rename(columns=df1.iloc[0]).drop(0) for d in dfs]
for df in renamed:
print(df)
# outputs:
col1 col2
1 A 1
2 B 2
colA colB
1 a hello
2 b goodbye