2017-05-05 20 views
0

我有一個熊貓數據框,看起來像這樣的列:的Python:傳遞if語句來繪製只含有漂浮在熊貓

a  b   c   d   e   f   g  \ 

0 2.689023 2.574812 86.125377 11.092565 4.939444 2.851453 1.754082
1 2.072062 2.142972 107.184461 45.948551 2.181561 3.030148 1.347777
2 2.122226 2.282065 84.648076 5.524413 12.444351 3.265505 1.487924
3 2.134716 2.059546 87.338169 2.102929 6.992658 3.124260 1.569247
4 1.394049 1.588723 52.834432 3.743313 8.523079 2.710473 1.14741 8

h   i   j   k   l   m   n  \ 

0 1.464062 63.088607 1.920668 85.786448 37.789046 23.080176 47.276513
1 1.026195 66.002393 1.297645 103.159307 19.147647 38.081938 91.625779
2 1.544903 63.542854 1.502209 90.655852 30.597791 33.488811 46.330959
3 1.464062 99.193164 1.910971 213.842295 36.663162 20.407577 46.259227
4 1.232436 61.228213 1.542646 71.922704 28.493704 8.649692 34.185022

o   p  Time Dose 

0 1.505346 0.7860962小時爲5mg/kg
1 2.249856 0.5365422小時爲5mg/kg
2 5.700618 0.3077842小時爲5mg/kg
3 3.583611 0.0582292小時爲5mg/kg
4 2.170392 0.4117652小時爲5mg/kg

我想要做的是對x軸上的所有測量變量進行單獨繪圖,並按照劑量進行分組。是這樣的:

Basic_lineplot

我可以通過由一個穿過每個變量名稱的一個作爲y值通過使用該命令實現這一點:

sns.factorplot(x="Time", y="a", hue="Dose", data=df2, kind="point") 

然而,由於這變得繁瑣,祝編寫一個for循環,該循環將只繪製具有數值的列,並排除列'時間'和'劑量'。我想使用的代碼是這樣的:

for i in df2: 
    if df2.dtypes == float: 
     lineplot = sns.factorplot(x="Time", y=i, hue="Dose", data=df2, 
        size=6, kind="point", capsize=.2, palette="dark", 
        legend_out=False) 

不過,我得到這個錯誤:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), 
a.item(), a.any() or a.all(). 

我在做什麼錯?

+0

一個念頭:我想從時間刪除單位和劑量列,並將值轉換爲浮點數 – Moritz

+0

是的,我試過這樣做。但是,雖然它解決了這個問題,但當我採用相同的數據集進行結構方程建模等進一步分析時,它會創建新的問題。 – Ratnadeep

+0

根據數據的大小,您可以創建兩個沒有字符串的新列並將其用於計算。稍後,您可以使用字符串列進行建模 – Moritz

回答

0

我認爲你正試圖系列在這個特殊的線路比較單一值:

if df2.dtypes == float: 

嘗試寫這爲:

if df2[i].dtypes == float: 
+0

這工作。萬分感謝! – Ratnadeep

+0

你能把這個標記爲正確答案嗎? – Aman

+0

是的,我做到了!再次感謝。 – Ratnadeep