我有多个数据框,我想对其执行相同的功能。因此,我需要遍历我的框架。
# read text files
df1 = pd.read_csv("df1.txt", sep="\t", error_bad_lines=False, index_col =None)
df2 = pd.read_csv("df2.txt", sep="\t", error_bad_lines=False, index_col =None)
df3 = pd.read_csv("df3.txt", sep="\t", error_bad_lines=False, index_col =None)
我使用了以下代码,但是,它不起作用(这意味着所有数据帧仍然相同,并且更改不会影响它们):
for df in [df1 , df2 , df3]:
df = df[df["Time"]>= 600.0].reset_index(drop=True)
df.head()
我如何遍历它们?以及如何覆盖数据帧?
答案 0 :(得分:2)
问题是您没有更改数据框架,而是创建了新的数据框架。这是一段可以就地更改内容的代码。我没有您的数据,因此出于此示例的目的,我创建了虚假数据:
df1 = pd.DataFrame(range(10))
df2 = pd.DataFrame(range(20))
df3 = pd.DataFrame(range(30))
df_list = [df1, df2, df3]
for df in df_list:
# use whatever condition you need in the following line
# for example, df.drop(df[df["Time"] < 600].index, inplace=True)
# in your case.
df.drop(df[df[0] % 2 == 0].index, inplace=True)
df.reset_index(inplace = True)
print(df2) # for example
df2
的结果是:
index 0
0 1 1
1 3 3
2 5 5
3 7 7
4 9 9
5 11 11
6 13 13
7 15 15
8 17 17
9 19 19
答案 1 :(得分:0)
这可能有效:
df_list=[df1,df2,df3]
for df in range(len(df_list)):
df=df_list[i]
df_list[i]=df[df["Time"]>=600.0].reset_iundex(drop=True)
答案 2 :(得分:0)
如果您只是将新的df存储到另一个列表或同一列表中,那么一切都很好。
newdf_list = [] # create new list to store df
for df in [df1 , df2 , df3]:
df = df[df["Time"]>= 600.0].reset_index(drop=True)
df.head()
newdf_list.append(df) # append changed df to new list