小编Fab*_*lls的帖子

Pandas 有多个列

我想选择数据框中包含列表中定义的值的所有行。我有两种方法都不能按预期/想要的那样工作。

我的数据框看起来像这样:

Timestamp DEVICE READING VALUE
1 | DEV1 | READ1 | randomvalue
2 | DEV1 | READ2 | randomvalue
3 | DEV2 | READ1 | randomvalue
4 | DEV2 | READ2 | randomvalue
5 | DEV3 | READ1 | randomvalue
Run Code Online (Sandbox Code Playgroud)

我有如下列表(ls):

[[DEV1, READ1], [DEV1, READ2], [DEV2,READ1]]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想删除行45

我的第一种方法是:

df = df[(df['DEVICE']. isin([ls[i][0] for i in range(len(ls))])) &
        (df['READING'].isin([ls[k][1] for k in range(len(ls))]))]
Run Code Online (Sandbox Code Playgroud)

这个问题很明显,它没有删除第 4 行,因为 DEV2 有 READING READ2,但它应该删除它。

我的第二种方法是:

df = df[(df[['DEVICE','READING']].isin({'DEVICE':  [ls[i][0] for …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Pandas Pivot表到One_hot

我想将pandas df转换为One_hot pandas df.描述的最佳方式可能是一个例子:

我看起来像这样:

ID|DEV |STATE|
1 |DEV1|on
2 |DEV2|on
3 |DEV1|off
3 |DEV3|on
3 |DEV3|off
Run Code Online (Sandbox Code Playgroud)

我知道不唯一的ID并不好,我正在努力.

然后我转动桌子:

data.pivot_table(index='ID', columns=['DEV'], values='STATE', dropna=True, aggfunc='first')
Run Code Online (Sandbox Code Playgroud)

其结果如下

ID|DEV1|DEV2|DEV3
1 |on  | NaN| NaN
2 | NaN| on | NaN
3 | off| NaN| on
4 | NaN| NaN| off
Run Code Online (Sandbox Code Playgroud)

我现在想得到这样的东西:

ID|DEV1.on|DEV1.off|DEV2.on|DEV3.on|DEV3.off
1 |     1 |       0|      0|      0|       0
2 |     0 |       0|      1|      0|       0
3 |     0 |       1|      0|      1|       0
4 |     0 |       0|      0|      0| …
Run Code Online (Sandbox Code Playgroud)

python pivot-table dataframe pandas

3
推荐指数
1
解决办法
121
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

pivot-table ×1