在Python3Pandas中使用dataframe,需要创建一个新列。我有两个具有不同长度字符串的类似列。新列应返回具有13个字符长度的第1或第2列。在excel中,我会把它写成:c2=if(len(b2)=13,b2,a2),然后把公式复制下来。
我需要解释的代码是:
df = pd.read_csv("example15.csv")
#create a new column with if-then statment
df['13_digit_#'] = (df.column1 len = 13 or df.column2 len = 13)
我该怎么改
我想知道是否有可能在pandas数据帧中搜索值,如果找到了,则返回行名和列名样式坐标。例如,如果在下面的数据框中搜索mat字符串,将返回(3,C)。
A B C
0 20 32 bat
1 30 234 cat
2 10 23 rat
3 40 23 mat
4 50 42523 etc
我已经通读了文档,我找到的最接近的解决方案是index.get_loc(),尽管它只返回基于命名索引的loc。
pandas版本0.22.0
我正在尝试创建一个与MSE完全相同的自定义损失函数,只是它不会计算真值为0(或低于某个阈值)的预测。我的想法是使用np.nan来忽略和不计算这些预测,然而,我的两种寻找均方误差的方法都不适用于np.nan的方法。 import numpy as np
from sklearn.metrics import mean_squared_error
a = np.random.normal(size=(4,4))
b = np.random.normal(size=(4,4))
##### METHOD 1
# Find initial MSE
difference_array = np.
我有一个txt_file,其行如下:"2017-03-21 12:00“、"844334879861069999”、"RT @__________:Ein der Schule spielen :) #SwitchMoment @NintendoDE URL“
我想在左边添加一个列,值为4表示正,0表示负值,这取决于该行是包含正的(":)“、”:d“还是负的笑脸( ":(")、”(“:”“)。如果这两种类型都在一行中,则需要将其变为99。我很高兴听到任何关于如何取得这些成果的建议。我的尝试:
import pandas as pd
我正试图通过一个Pandas系列来迭代。
如果列‘%’‘%可再生’中的值大于'%可再生‘列的中值,则应在新列中将该值分配给1否则,该值应保持原样。
新系列'HighRenew'中每一项的值应根据条件是否满足而改变。
for value in Reducedset['% Renewable']:
if value >= Reducedset['% Renewable'].median():
Reducedset['HighRenew'] = 1
else:
Reduced
我将我的数据放在一个pandas.groupby对象中,并尝试基于标题为"Amount“的列中的条件来迭代组。然而,我得到的错误消息是试图将“引用”代码从字符串转换为浮点数,但我不确定在哪里给出这个指令。
for data in row:
if float(data) in ['Amount'] > 0:
{'buy_currency' : ['Currency'],
'buy_quantity' : ['Amount'],
'ord
我有一个数据文件df
import pandas
df = pandas.DataFrame(data=[[1,True],[2,False]],columns=['A','decide'])
根据“决定”列的值,我要对哪些行应用函数fun
def fun(case,var):
case = case + var
return case
df=df.apply(lambda x: fun(x,1) if x['decide'] else fun(x,2))
当然不起作用了:)知道为什么和如何让它起作用吗?
考虑下面的示例代码
import pandas as pd
import numpy as np
pd.set_option('display.expand_frame_repr', False)
foo = pd.read_csv("foo2.csv", skipinitialspace=True, index_col='Index')
foo.loc[:, 'Date'] = pd.to_datetime(foo.Date)
for i in range(0, len(foo)-1):
if foo.at[i, &
我想将数据帧中小于某个值(b)的所有值(227行,397列)替换为零,其余的应该是现有的值-b。这是一种基线校正。我有一个有效的解决方案:循环遍历每个值,检查条件并替换它。 import pandas as pd
b = 20
for index, row in df.iterrows():
for col in df.columns:
if df.loc[index, col] <= b:
df.loc[index, col] = 0.0
else:
df.loc[index, col]
我正在尝试将值分配给条件已验证的行(True/False)。
for i in range(0,3):
new_dataset=df[str(i)][df[str(i)]["Current Amount"] != "3m"]
for i in range(0,3):
df[i]['Value'] = np.where(df[i]['Amount']== True, 100, 50)
其中i可以从0跨越到3。Value是我想要创建的新列;Amount是原始数据框架中已经存在的列。在第一部分中,我创建了新的数据帧,过滤当
我正在尝试在一个新的专栏中执行一个Pandas IF then Else语句。我找不到任何问题,人们在自己的字符串中使用write或"Yes"/"No“。 尝试执行以下逻辑,如果A列= B列,则否,否则为是。 enterprisehr['Change_Dept'] = np.select([enterprisehr['Dept_Descr'] == enterprisehr['Old_Dept_Descr']], "No", "Yes") 我得到了这个错误:ValueError: list
我有按原点和目的地对分组的数据。我想将组中的第一行与组中的其他行进行比较。如果一行符合一定的条件,那么我想标记它。下面是我的数据的快照:
Orig Dest Route Vol Per VolPct
ORD ICN A 2,251 0.64 0.78
ORD ICN B 366 0.97 0.13
ORD ICN C 142 0.14 0.05
ORD ICN D 100 0.22 0.03
ORD
我有以下代码
import pandas as pd
from pandas_datareader import data as web
import numpy as np
import math
data = web.DataReader('goog', 'yahoo')
df['lifetime'] = data['High'].asfreq('D').rolling(window=999999, min_periods=1).max() #To check if it is a lifetime high
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
titanic=pd.read_csv('C:/Users/prasun.j/Downloads/train.csv')
sex=[]
if titanic['Sex']=='male':
sex.append(1)
else:
sex.append(0)
sex
我正在尝试一个列表,当语句遇到男性时应该追加1,当语句遇到女性时应该追加0,我不知道我做错了什么,有人可以帮助我吗,提前