Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为新列[Python]赋值_Python_Python 2.7_Python 3.x_Pandas_Csv - Fatal编程技术网

为新列[Python]赋值

为新列[Python]赋值,python,python-2.7,python-3.x,pandas,csv,Python,Python 2.7,Python 3.x,Pandas,Csv,我有一个在脚本中运行两个函数的场景: test.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 =

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

test.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,并且应该一个接一个地存储这些值(追加)。根据上面的说明,它不起作用&在互联网上找不到任何类似的东西。任何帮助都会很好

您需要将变量作为参数传递到函数
func3
,如果
func1
func2
中的唯一区别是文件名,则只创建一个带参数的函数

谢谢你的主意;)

样本:

dataf = pd.DataFrame({'overall':[1,7,8,9,4],
                      'col':list('abcde')})

print (dataf)
  col  overall
0   a        1
1   b        7
2   c        8
3   d        9
4   e        4

val1 = 20
val2 = 50

dataf.iloc[::2, dataf.columns.get_loc('overall')] = val1 
dataf.iloc[1::2, dataf.columns.get_loc('overall')] = val2
print (dataf)
  col  overall
0   a       20
1   b       50
2   c       20
3   d       50
4   e       20
附加列表中的
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

哦,我的。。。您知道如何使用函数吗?您应该先阅读关于函数和返回值的教程。@cᴏʟᴅsᴘᴇᴇᴅ - 谢谢,现在好多了?是的,现在看起来不错。谢谢你的回答,但这会使单元格中的值过多,而不是附加它。我认为最好是创建两列-一列用于
val1
,另一列用于
val2
。或者,在新列
val1、val2
val1+val2
每行中,您希望的输出是什么?根据我的情况,val1和val2是不同的值,我需要逐个放置。例如:-第1行-->val1第2行-->val2每次函数返回值时,我都应将其存储在新的CSV中。
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