iT邦幫忙

0

python 修改dataframe的值後出現Nan

  • 分享至 

  • xImage

大家好,最近剛開始學python,想請問為什麼將df1的資料引用到df後會出現NaN呢?? 還請各位指教
for i in df['證券代號']:
for x in df1['證券代號']:
if i == x:
df.at[df.index[df['證券代號'] == i].tolist(), "殖利率(%)"] =df1.loc[df1.index[df1['證券代號'] == i].tolist(),'殖利率(%)']
在這段代碼之後CSV檔的殖利率(%)會出現空白而不是出現對應證券代號的殖利率https://ithelp.ithome.com.tw/upload/images/20210709/20139313jOOwKA1nbh.jpghttps://ithelp.ithome.com.tw/upload/images/20210709/20139313UB4KadSetQ.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-07-09 09:58:33
最佳解答

https://ithelp.ithome.com.tw/upload/images/20210709/20001787D3g0XpWhT3.png

既然已經用 pandas
就不要自己查表比對填值
merge 即可

merged_df = pd.merge(df [["code","name","share","trans","moa","open","max","min","close"]],
                     df1[["code","rate"]],
                     left_on = "code", 
                     right_on = "code", 
                     how='left')
看更多先前的回應...收起先前的回應...

Panda 你也會~~~

/images/emoticon/emoticon25.gif

Panda 你也會~~~

其實這題最大的收獲是找到 trinket
這個可以在線上使用 pandas 的 fiddle
/images/emoticon/emoticon01.gif

trinket 這個看來不錯

trinket 這個看來不錯

我就說吧
/images/emoticon/emoticon71.gif

cashrain iT邦新手 5 級 ‧ 2021-07-09 16:22:53 檢舉

感謝~成功了!

0
不明

看起來沒什麼問題~
存csv前print(df)看也是空值嗎

import pandas as pd

df =\
pd.DataFrame([[1103,1104,1108],["","",""]] ).T
df.columns = ["證券代號","殖利率(%)"]

print('df:')
print(df)

df1 =\
pd.DataFrame([[1103,1104,1108],['6.22','4.68','5.19']] ).T

df1.columns = ["證券代號","殖利率(%)"]
print('df1:')
print(df1)

for i in df['證券代號']:
    for x in df1['證券代號']:
        if i == x:
            df.at[df.index[df['證券代號'] == i].tolist(), "殖利率(%)"] =df1.loc[df1.index[df1['證券代號'] == i].tolist(),'殖利率(%)']
            
print('迴圈後df:')
print(df)

result

df:
   證券代號 殖利率(%)
0  1103       
1  1104       
2  1108       
df1:
   證券代號 殖利率(%)
0  1103   6.22
1  1104   4.68
2  1108   5.19
迴圈後df:
   證券代號 殖利率(%)
0  1103   6.22
1  1104   4.68
2  1108   5.19
cashrain iT邦新手 5 級 ‧ 2021-07-09 15:10:03 檢舉

我是加了迴圈之後才變空值,迴圈前我是在df新建1個殖利率columns全部值都填1,然後想說再靠迴圈把df殖利率的值改成df1相對應證券代號的殖利率,結果卻變成NaN值https://ithelp.ithome.com.tw/upload/images/20210709/20139313RDUsbPmRxI.jpghttps://ithelp.ithome.com.tw/upload/images/20210709/20139313jOfUITg4Q9.jpg

我要發表回答

立即登入回答