熊猫:修改多个数据框(循环)

时间:2020-06-02 07:16:56

标签: python pandas

我有多个数据框,我想对其执行相同的功能。因此,我需要遍历我的框架。

# 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()

我如何遍历它们?以及如何覆盖数据帧?

3 个答案:

答案 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