当我运行这段代码时
df = raw.copy() # making a copy of dataframe raw
df['new col'] = ''
for i in range(len(df)):
df['new col'].loc[i] = 'some thing'
我得到了这个警告(警告1):
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in
我正在做一个虚拟项目来磨练我的蟒蛇技能,但我遇到了一个问题。我有一个pandas列,里面有很多值,我想做以下事情(我设置了chunksize = 1440,因为我想以1440为一组来处理数据,并分别存储每组1440的输出。) 取该列的第一个值(设为'x'),检查其余(1439)个值,如果发现一个大于'x‘的值,则将其设为'y’。如果您发现值大于'y‘的条目,请在单独的列中输入'Profit’。或者,如果您发现值小于'y‘的条目,请在单独的列中输入'Loss’。这是我尝试过的: import pandas as pd
for
考虑下面是我的数据框架,我希望填充百分比列,将单个标记除以Total,以获得百分比。
Name Marks
0 Total 100
1 Name1 45
2 Name2 65
3 name3 93
4 name4 89
我写了这样的代码
for i in range(0,5):
pcnt=(df['Marks'][i])/(df['Marks'][0])
df['Percentage']=pcnt*100
但是百分比列只为所有行生成0。上面的代码只是一个例子
我尝试在pandas数据框中添加一个新列,然后逐行更新该列的值:
my_df['col_A'] = 0
for index, row in my_df.iterrows():
my_df.loc[index]['col_A'] = 100 # value here changes in real case
print(my_df.loc[index]['col_A'])
my_df
但是,在打印输出中,col_A中的所有值仍然为0,这是为什么?我错过了什么?谢谢!
我有一个pandas dataframe,我想通过应用基于count函数的过滤器来创建一个新的dataframe,以便只选择计数等于指定数字的那些列。 例如在下面的数据框中: month_end Col A Col B Col C Col D
200703 NaN NaN NaN NaN
200704 0.084 0.152 0.142 0.0766
200705 0.124 0.123 0.020 Na
我正试图用熊猫来处理python中的一些数据,以创建数据,但我在处理每一列中的数据时遇到了困难。实际上,我需要做的是,对于数据中不是深度的每一列,检查列中的每个值是否高于第95百分位数。如果是这样,则必须将该值替换为前一个和下一个的平均值。
我想使用一个函数来完成第一部分,然后对每一列进行迭代.但这不太管用,我也不知道为什么。
到目前为止,代码是
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'''
Function do remove the "spikes
因此,我试图制作一个使用MFI和成交量的交易算法。到目前为止,这是代码:
import pandas as pd
import numpy as np
import pandas_datareader as web
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
#get stock prices
start = dt.datetime(2017, 1, 1)
end = dt.datetime(2020, 1, 1)
d = web.Data
我有以下df,我正在尝试查看第一列中第一行的值是什么,以及它是否等于本例中的预定字符"0“。我也试过了: if df[col_titles[0]].values[0] == x:
print(True)
df = df.drop(x) 它没有工作,并且有完全相同的错误(如下所示)。 First Column Name Second Column Name Third Column Name Fourth Column Name
0 0 3
我正在尝试迭代具有non-sequential索引标签的Pandas DataFrame (逐行)。换句话说,一个Dataframe的索引标签看起来是这样的:2,3,4,5,6,7,8,9,11,12,...。没有行/索引标签10。我想迭代DataFrame,以便根据条件更新/编辑每一行中的某些值,因为我正在将Excel (它已经合并了单元格)读取到DataFrames中。
我尝试使用下面的代码)迭代每一行df,并在条件适用的情况下编辑每一行。
for col in list(df): #All columns
for row in df[1].iterrows():
我有一段代码:
self.value=0.8
for col in df.ix[:,'value1':'value3']:
df = df.iloc[abs(df[col] - self.value).argsort()]
它作为main()函数的一部分完美地工作。作为回报,它打印:
artist track pos neg neu
4 Sufjan Stevens Casimir Pulaski Day 0.09 0.91
使用Pandas
我试图确定某一行中的值是否大于同一行中所有其他列中的值。要做到这一点,我正在循环遍历dataframe的行,并使用'all‘函数来比较其他列中的值;但这似乎是抛出一个错误“字符串索引必须是整数”。
这似乎是可行的:这种方法有什么问题吗?
for row in dataframe:
if all (i < row['col1'] for i in [row['col2'], row['col3'], row['col4'], row['col5']]):
row
我知道这是一个非常常见的错误,然而,在我的情况下,我不能弄清楚为什么会发生在我身上。
我得到了:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#i
我想通过在循环中应用if else来提取具有多个条件的pandas字符串。然而,它似乎不起作用,并且只返回第一列。对此有什么建议吗?
|col_a|col_b|
|peter--bob:5067561|peter--bob:5067561|
|chris**bbb:5067561|chris**bbb:5067561|
|bob##ccc:5067561|bob##ccc:5067561|
def get_string(df):
cols = df.columns[0:20]
for col in cols:
if col.find('*
我很难能够更改一列中的所有值,而另一列具有与需要更改的值相关联的唯一ID。例如..。 col1 | col2
a x
a x
a y
a y
b 'none'
b x
b x
b z
b z 我需要能够检查col2包含“none”的位置,然后将col2中的所有值更改为“none”,其中col1等于“b”。请记住,我在示例中提供的值不是真正的值,它们要长得多,并且有上千行中的100行,因此不能手动检查名称。这将
Python 3.4和Pandas 0.15.0
df是一个数据帧,col1是一个列。使用下面的代码,我将检查值10是否存在,并将这些值替换为1000。
df.col1[df.col1 == 10] = 1000
这是另一个例子。这一次,我将根据索引更改col2中的值。
df.col2[df.index == 151] = 500
这两种情况都会产生以下警告:
-c:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the the caveats
我每天在工作中使用熊猫。我最近将0.15.1从0.13.1升级到了0.15.1,现在,当迭代相对较小的DataFrames时,一堆代码太慢了,无法完成。
(我意识到通常有更好/更快的方法来完成DataFrame上的迭代,但有时有一个for循环结构是非常清晰和简洁的)
当混合类型时,我将问题归结为一个问题:
def iterGet(df,col):
for i in df.index:
tmp = df[col].loc[i]
def iterLocSet(df,col,val):
for i in df.index:
#df[col].loc[
我得到了一个索引错误,我不知道如何修复它:IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).,我不明白它为什么要抛出这个错误,因为display()调用中显示的索引是一致的。
我尝试了答案中的双括号,但没有起作用。
下面的可重复示例基于一个严重简化的真实代码版本。在最后一行中抛出错误。
使用Python 3.7。
import pandas as pd
def myfcn(row,