我有以下数据集:
import numpy as np
array_id = np.array([2,4,7])
我有以下带有ids的数组:
df = pd.DataFrame({'Name': ['Station', 'Sensor', 'Station', 'Sensor',
'Sensor', 'Sensor', 'Sensor'],
'Type': ['analog', 'dig', 'analog', 'analog',
'analog', 'analog', 'dig'],
'id': [1, 2, 3, 4, 5, 6, 7]})
我想选择 id 属于 id 数组的数据帧 (df) 的列(array_id)。我希望输出是:
Name Type id
Sensor dig 2
Sensor analog 4
Sensor dig 7
我设法实现了执行此操作的代码,但我需要使用两个for():
d = {'Name', 'Type', 'id'}
df_aux = pd.DataFrame(d)
df_select = pd.DataFrame(d)
for i in range(0, len(df)):
for j in range(0, len(array_id)):
if(df['id'].iloc[i] == array_id[j]):
array_aux = [(df['Name'].iloc[i],
df['Type'].iloc[i],
df['id'].iloc[i])]
df_aux = pd.DataFrame(array_aux, columns = ['Name', 'Type', 'id'])
df_select = pd.concat([df_select, df_aux])
输出为:
print(df_select)
0 Name Type id
id NaN NaN NaN
Type NaN NaN NaN
Name NaN NaN NaN
NaN Sensor dig 2.0
NaN Sensor analog 4.0
NaN Sensor dig 7.0
我想学习一种不需要使用两个for()的方法,并且(df_select)的输出不会与NaN一起出现。有没有办法解决这个问题?
使用Series的isin
方法。
df.loc[df['id'].isin(array_id), :]
我有一个带有数组列的数据帧: 我读了这个CSV,并将“类”列的值转换成数组: 现在我想选择“类”值中具有“performer_0”的行。像这样: 但是这个代码不起作用: 回溯(最后一次调用):文件“d:\pyenv\pandas\lib\site packages\pandas\core\indexes\base.py”,第2657行,在get_loc return self.\u engine.
问题内容: 我正在尝试检查python列中是否包含某个值。我正在使用,我毫不怀疑它是一个很好的工具。问题是我有超过350K的行,并且输出不会显示所有的行,因此我可以查看该值是否实际包含在内。简而言之,我只想知道(Y / N)列中是否包含特定值。我的代码如下: 问题答案: 我认为如果需要行,其中column的值包含string : 或者,如果的列是: 如果要检查 列中的最后4位数字: 样品:
这是我的密码: 它返回表中所有列的数组。但我不需要把所有的专栏都写下来。我只需要返回以下列:。我对此进行了搜索并找到了答案:(使用函数) 但它并没有返回预期的结果。它返回以下内容: 如您所见,没有和列。我怎样才能修好它?
我有如下数据帧。 输入 输出 这怎么能在python中完成
我有一个25列的数据帧和一个数组([2,4,8,10,11,12,13,14,17,18,19,20,21,22,23],dtype=int64)。我想从dataframe中选择一些特定的列,这些列的索引由数组的元素给出,并将它们存储在一个新的dataframe中(比如df1)。例如,新数据帧将有原始数据帧的第2、第4、第23列。
我有一个熊猫数据框,看起来像这样: 下面是一个列表: 如何删除熊猫数据帧中包含列表中给定字符串的每一行? 所需的输出应如下所示: