Pandas从另一个数据框赋值给列

-1 投票
1 回答
72 浏览
提问于 2025-04-13 01:19

我有一个数据框(df),里面有一些数据。我想从不同的文件中获取up_timedown_time。这些文件的名字是根据File_name这一列来决定的。根据这个信息,我希望用Python打开这些文件,按照时间筛选出新的数据框,并获取相应的Up_timeDown_time

df

Time             Price  File_name  Up_Time  Down_Time
21-03-24 08:25  1037.3   45372      
21-03-24 08:26  1056.35  45375
21-03-24 08:27  1073.85  4537   

我正在使用以下代码:

df['Up_Time'] = np.nan
df['Down_time'] = np.nan

for i in range(1, len(df) + 1):
    time=df.iloc[i]['Time']
    file_name=df.iloc[i]['File_name']
    new_df=pd.read_csv(path+str(file_name)+".csv")
    new_df=new_df[new_df['Time'].str.contains(time)]
    up_time=new_df['Up_Time']
    down_time=new_df['Down_Time']
    df.iloc[i]['Up_Time'] = up_time
    df.iloc[i]['Down_time'] = down_time
    

但是我遇到了一个错误。

IndexError: single positional indexer is out-of-bounds

或者到处都是NaN(不是一个数字)。

我不确定问题出在哪里。

1 个回答

0

通过把单元格的值转换成字符串,我就可以把这个值放回到原来的数据框里。

up=str(new_df['Up_Time'])
up=up.replace('\nName: Up_Time, dtype: object', '')
up=up.replace('0    ', '')
up=up.replace('2024-03-21', '')
down=str(new_df['Down_Time'])
down=down.replace('\nName: Down_Time, dtype: object', '')
down=down.replace('0    ', '')
df.loc[df.index[i], 'Up_Time'] = up
df.loc[df.index[i], 'Down_Time'] = down

撰写回答