为新列赋值[Python pandas]

2024-06-16 12:58:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个场景,在一个脚本中运行两个函数:

在测试.py公司名称:

def func1():
    df1=pd.read_csv('test1.csv')
    val1=df['col1'].mean().round(2)
    return va11

def func2():
    df2=pd.read_csv('test2.csv')
    val2=df['col1'].mean().round(2)
    return val2

def func3():
    dataf = pd.read_csv('test3.csv')
    col1=dataf['area']
    col2 = dataf['overall']
    dataf['overall']=val1 # value from val1 ->leads to error
    dataf['overall']=val2 #value from val2 ->leads to error

在这里,我正在读取test1.csv和test2.csv文件,并将平均值分别存储在变量“val1”和“val2”中并返回相同的值。 我想把这些变量值存储在一个新的test3.csv文件中,这个文件有两个col,这些值应该一个接一个地存储(追加)。根据上面的内容,它并不是在互联网上找不到任何东西。任何帮助都会很好。在


Tags: 文件csvdfreadreturndefmeancol1
1条回答
网友
1楼 · 发布于 2024-06-16 12:58:50

您需要在函数func3中传递变量作为参数,如果func1和{}中的唯一区别是文件名,则只创建一个带有parameter的函数。在

感谢您的想法cᴏʟᴅsᴘᴇᴇᴅ;)

def func1(file):
    df=pd.read_csv(file)
    val=df['col1'].mean().round(2)
    return val

a = func1('test1.csv')
b = func1('test2.csv')

def func3(val1=a, val2=b):
    dataf = pd.read_csv('test3.csv')
    col1=dataf['area']
    col2 = dataf['overall']
    dataf.iloc[::2, dataf.columns.get_loc('overall')] = val1 
    dataf.iloc[1::2, dataf.columns.get_loc('overall')] = val2
    return dataf

样品:

^{pr2}$

从列表中追加N值的一般解决方案-按^{}创建数组,然后分配给新列:

val =[1,8,4]
a = np.tile(val, int(len(dataf) / len(val))+2)[:len(dataf)]
dataf['overall'] = a
print (dataf)
  col  overall
0   a        1
1   b        8
2   c        4
3   d        1
4   e        8

相关问题 更多 >