簡體   English   中英

將值分配給新列[Python pandas]

[英]assign value to new column [Python pandas]

我有一個在腳本中運行兩個功能的場景:

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文件中,該文件具有兩個列,並且值應一個接一個地存儲(附加)。 綜上所述,它無法正常工作,因此無法在互聯網上找到任何內容。 任何幫助都會很棒。

您需要在函數func3中將變量作為參數傳遞,並且如果func1func2唯一區別是文件名,請僅使用parameetr創建一個函數。

感謝您的想法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

樣品:

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值的一般解決方案-通過numpy.tile創建數組,然后分配給新列:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM