簡體   English   中英

iloc熊貓切片困難

[英]iloc Pandas Slice Difficulties

我已經根據評論對以下信息進行了更新:

我有以下數據框df(它有38列,這只是最后幾列):

Col #   33          34          35          36          37          38
id      09.2018     10.2018     11.2018     12.2018     LTx         LTx2
123     0.505       0.505       0.505       0.505       33          35
223     2.462       2.464       0.0         30.0        33          36
323     1.231       1.231       1.231       1.231       33          35
423     0.859       0.855       0.850       0.847       33          36

我正在嘗試創建一個新列,該列是使用iloc的一個切片的總和,因此col 123的示例如下所示:

df['LTx3'] = (df.iloc[:, 33:35]).sum(axis=1)

顯然,這對於123而言是完美的,但對於223而言則不是。我以為這可以工作:

df['LTx3'] = (df.iloc[:, 'LTx':'LTx2']).sum(axis=1)

但始終會得到相同的錯誤:

TypeError: cannot do slice indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [LTx] of <class 'str'>

我一直在嘗試這種變化,例如下面,但不幸的是也沒有找到任何可行的解決方案:

df['LTx3'] = (df.iloc[:, df.columns.get_loc('LTx'):df.columns.get_loc('LTx2')]).sum(axis=1)

基本上,列LTx和LTx2由整數組成,但行與行之間有所不同。 我想將這些整數用作切片的參考-我不太確定該怎么做。

如果有人可以幫助我找到解決方案,那就太好了!

干杯

我建議閱讀熊貓中的.loc.iloc切片: https : .iloc

.loc根據名稱進行選擇。 .iloc根據索引(數字)位置進行選擇。

您還可以基於列名進行子集設置。 還要注意,根據創建數據框的方式,數字可能會轉換為字符串。

獲取對應於223的行:

df3 = df[df['Col'] == '223']

要獲取與名稱 33、34和45對應的列:

df3 = df[df['Col'] == '223'].loc[:, '33':'35']

如果要選擇其中任何列包含給定字符串的行,我找到了以下解決方案: 在Pandas數據框中選擇任何列包含字符串的行的最簡潔方法?

df[df.apply(lambda row: row.astype(str).str.contains('LTx2').any(), axis=1)]

暫無
暫無

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

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