小编Flo*_*oor的帖子

将numpy.array存储在Pandas.DataFrame的单元格中

我有一个数据框,我想在其中存储'raw' numpy.array:

df['COL_ARRAY'] = df.apply(lambda r: np.array(do_something_with_r), axis=1)
Run Code Online (Sandbox Code Playgroud)

但似乎pandas试图'解包'numpy.array.

有解决方法吗?除了使用包装器(参见下面的编辑)?

我试过reduce=False没有成功.

编辑

这是有效的,但是我必须使用'dummy' Data类来包围数组,这是不令人满意的并且不是很优雅.

class Data:
    def __init__(self, v):
        self.v = v

meas = pd.read_excel(DATA_FILE)
meas['DATA'] = meas.apply(
    lambda r: Data(np.array(pd.read_csv(r['filename'])))),
    axis=1
)
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

21
推荐指数
3
解决办法
3万
查看次数

如何使用布尔掩码在pandas DataFrame中用nan替换'any strings'?

我有一个227x4 DataFrame,国家名称和数值要清理(争吵?).

这是DataFrame的抽象:

import pandas as pd
import random
import string
import numpy as np
pdn = pd.DataFrame(["".join([random.choice(string.ascii_letters) for i in range(3)]) for j in range (6)], columns =['Country Name'])
measures = pd.DataFrame(np.random.random_integers(10,size=(6,2)), columns=['Measure1','Measure2'])
df = pdn.merge(measures, how= 'inner', left_index=True, right_index =True)

df.iloc[4,1] = 'str'
df.iloc[1,2] = 'stuff'
print(df)

  Country Name Measure1 Measure2
0          tua        6        3
1          MDK        3    stuff
2          RJU        7        2
3          WyB        7        8
4          Nnr      str        3
5          rVN        7        4
Run Code Online (Sandbox Code Playgroud)

如何np.nan在不触及国家/地区名称的情况下在所有列中替换字符串值? …

python numpy dataframe python-3.x pandas

13
推荐指数
3
解决办法
3838
查看次数

如何在Pandas中使用查询内的变量?

当我使用变量而不是值时,我在熊猫中查询数据框时遇到问题.

df2 = pd.read_csv('my.csv')
query=df2.query('cc_vehicle_line==7')
Run Code Online (Sandbox Code Playgroud)

工作正常但是

df2 = pd.read_csv('my.csv')
query=df2.query('cc_vehicle_line==variable_name')
Run Code Online (Sandbox Code Playgroud)

它抛出了variable_name未定义的消息.但它已定义.我不能使用硬编码值,因为我需要自动化,并根据variable_name的值,选择相关的行.

我错过了什么吗?

谢谢

python variables indexing pandas

10
推荐指数
1
解决办法
5866
查看次数

如何在另一个列表中获取列表项的索引?

考虑我有这些列表:

l = [5,6,7,8,9,10,5,15,20]
m = [10,5]
Run Code Online (Sandbox Code Playgroud)

我想要得到的指数ml.我使用list comprehension来做到这一点:

[(i,i+1) for i,j in enumerate(l) if m[0] == l[i] and m[1] == l[i+1]]
Run Code Online (Sandbox Code Playgroud)

输出: [(5,6)]

但如果我有更多的数字m,我觉得它不是正确的方法.那么Python或NumPy有什么简单的方法吗?

另一个例子:

l = [5,6,7,8,9,10,5,15,20,50,16,18]
m = [10,5,15,20]
Run Code Online (Sandbox Code Playgroud)

输出应该是:

[(5,6,7,8)]
Run Code Online (Sandbox Code Playgroud)

python numpy list

10
推荐指数
2
解决办法
1296
查看次数

如何在 Pandas 中查询数字列名?

假设我创建了一个带有列和查询的数据框,即

pd.DataFrame([[1,2],[3,4],[5,6]],columns=['a','b']).query('a>1')
Run Code Online (Sandbox Code Playgroud)

这会给我

   a  b
1  3  4
2  5  6
Run Code Online (Sandbox Code Playgroud)

但是当数据框值太大而我没有列名时,如何通过索引查询列?

我尝试通过传递一个数字来查询,但这不是这样做的方式。

pd.DataFrame([[1,2],[3,4],[5,6]]).query('0>1') # This is what I tried. 
Run Code Online (Sandbox Code Playgroud)

如何表示0查询中的列名?

预期输出:

   0  1
1  3  4
2  5  6
Run Code Online (Sandbox Code Playgroud)

python pandas

8
推荐指数
1
解决办法
2692
查看次数

cv_result 中的“mean_test_score”是什么意思?

你好,我正在做一个GridSearchCV,我打印与结果.cv_results_的功能scikit learn

我的问题是,当我手动评估所有测试分数分割的平均值时,我得到的数字与'mean_test_score'. 与标准有np.mean()什么不同?

我在此附上带有结果的代码:

n_estimators = [100]
max_depth = [3]
learning_rate = [0.1]

param_grid = dict(max_depth=max_depth, n_estimators=n_estimators, learning_rate=learning_rate)

gkf = GroupKFold(n_splits=7)


grid_search = GridSearchCV(model, param_grid, scoring=score_auc, cv=gkf)
grid_result = grid_search.fit(X, Y, groups=patients)

grid_result.cv_results_
Run Code Online (Sandbox Code Playgroud)

这个操作的结果是:

{'mean_fit_time': array([ 8.92773601]),
 'mean_score_time': array([ 0.04288721]),
 'mean_test_score': array([ 0.83490629]),
 'mean_train_score': array([ 0.95167036]),
 'param_learning_rate': masked_array(data = [0.1],
              mask = [False],
        fill_value = ?),
 'param_max_depth': masked_array(data = [3],
              mask = [False],
        fill_value = ?),
 'param_n_estimators': masked_array(data = [100],
              mask …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn grid-search

7
推荐指数
1
解决办法
2万
查看次数

如何基于另一列的值在pandas dataframe列中创建新值

我有一个pandas数据帧,我从csv文件读入的值.我有一个标有'SleepQuality'的列,值从0.0到100.0浮动.我想创建一个标记为'SleepQualityGroup'的新列,其中原始列btw 0 - 49中的值在新列中的值为0,50 - 59 = 1,60 - 69 = 2,70 - 79 = 3,80 - 89 = 4,而90 - 100 = 5

为了做到这一点,最好的配方是什么?我坚持识别每个范围中所有值并分配给新值所需的逻辑.

下面在新的"SleepQualityGroup"列中输出结果的示例.

SleepQuality    SleepQualityGroup
80.4              4
90.1              5
66.4              2
50.3              1
86.2              4
75.4              3
45.7              0
91.5              5
61.3              2 
54                1
58.2              1
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

7
推荐指数
2
解决办法
470
查看次数

如何将熊猫列中的JSON数据转换为新列

我有这个简短版本的ADSB json数据,想将其转换为datacab列,例如Icao,Alt,Lat,Long,Sdd,Cou .....

在Alperen告诉我这样做之后

df = pd.read_json('2016-06-20-2359Z.json', lines=True), 
Run Code Online (Sandbox Code Playgroud)

我可以将其加载到DataFrame中。但是,df.acList

[{'Id':10537990,'Rcvr':1,'HasSig':False,...
名称:acList,dtype:对象

如何获取Icao,Alt,Lat,Long,Sdd,Cou数据?

 “ src”:1,
   “提要”:[  
      {  
         “ id”:1,
         “名称”:“ ADSBexchange.com”,
         “ polarPlot”:false
      }
   ],
   “ srcFeed”:1,
   “ showSil”:是的,
   “ showFlg”:是的,
   “ showPic”:是的,
   “ flgH”:20,
   “ flgW”:85,
   “ acList”:[  
      {  
         “ Id”:11281748,
         “ Rcvr”:1,
         “ HasSig”:否,
         “ Icao”:“ AC2554”,
         “错误”:false,
         “ Reg”:“ N882AS”,
         “ FSeen”:“ \ /日期(1466467166951)\ /”,
         “ TSecs”:3,
         “ CMsgs”:1,
         “ AltT”:0,
         “ Tisb”:否,
         “ TrkH”:否,
         “类型”:“ CRJ2”,
         “ Mdl”:“ 2001 
炸弹公司 
 CL-600-2B19“,
         “ Man”:“ Bombardier”,
         “ …

python json pandas

6
推荐指数
3
解决办法
5454
查看次数

如何使用pandas选择所有非NaN列和非NaN最后一列?

如果标题有点令人困惑,请原谅我.

假设我有test.h5.以下是使用读取此文件的结果df.read_hdf('test.h5', 'testdata')

     0     1     2     3     4     5    6
0   123   444   111   321   NaN   NaN  NaN
1   12    234   113   67    21    32   900
3   212   112   543   321   45    NaN  NaN
Run Code Online (Sandbox Code Playgroud)

我想选择最后一个非Nan列.我的预期结果是这样的

0   321
1   900
2   45
Run Code Online (Sandbox Code Playgroud)

另外,我想选择除最后一个非NaN列之外的所有列.我的预期结果可能是这样的.它可能是numpy数组但我还没有任何解决方案.

      0     1     2     3     4     5    6
0    123   444   111   
1    12    234   113   67    21    32  
3    212   112   543   321  
Run Code Online (Sandbox Code Playgroud)

我在网上搜索,发现df.iloc[:, :-1]阅读所有专栏,但最后一篇,并df.iloc[:, -1]阅读最后一栏.

我使用这两个命令的当前结果如下:1.用于读取除最后一列之外的所有列

       0     1     2     3 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

6
推荐指数
3
解决办法
944
查看次数

熊猫 - 样式 - 使用其他数据框的背景渐变

我喜欢使用 background_gradient,因为它可以帮助我以 excel 的方式查看我的数据框。
但我想知道是否有办法将颜色映射到另一个数据框中的数字。
例如,我热衷于使用 zscores 的数据框为数据框着色,以便我可以快速查看异常值的值。

A = pd.DataFrame(np.random.randn(6, 3), columns=['a', 'b', 'c']) 
B = pd.DataFrame(np.random.randn(6, 3), columns=['a', 'b', 'c'])
A.style.background_gradient(???)
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用background_gradient以便它使用数据帧 B 中的值来设置样式 A。

python matplotlib pandas

6
推荐指数
1
解决办法
3799
查看次数