我有一个pandas数据帧如下:
foo bar
a b
1 10
2 25
3 9
Run Code Online (Sandbox Code Playgroud)
我想添加一个新列,如下所示:
foo bar baz
a b 0
1 10 1
2 25 1
3 9 1
Run Code Online (Sandbox Code Playgroud)
这是:如果row ['foo']或row ['bar]是数字,那么row ['baz'] = 1 else 0
到目前为止我所拥有的是:
def some_function(row):
if row['foo']>=0 or row['bar']>=0:
return 1
return 0
df['baz'] = df.apply(lambda row: some_function(row), axis=1
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为dtype不是int.我不能删除non-int行,因为我在数据帧中需要它们.
知道如何解决这个问题吗?
我想在 Pandas 数据框中创建一个新的命名列,将第一个值插入其中,然后向同一列添加另一个值:
就像是:
import pandas
df = pandas.DataFrame()
df['New column'].append('a')
df['New column'].append('b')
df['New column'].append('c')
etc.
Run Code Online (Sandbox Code Playgroud)
我怎么做?
所以这是我想要做的类似情况
data = pd.read_csv(data)
df = pd.DataFrame(data)
print(df)
Run Code Online (Sandbox Code Playgroud)
数据框如下所示
... 'd1' 'd2' 'd3... 'd13'
0 ... 0 0 0... 0
1 ... 0 0.95 0... 0
2 ... 0 0.95 0.95... 0
Run Code Online (Sandbox Code Playgroud)
所以依此类推,基本上我想选择数据框的最后13列,并计算每行的数量大于某个值,然后将其附加到我的数据框.
我认为必须有一个简单的方法,我一直试图使用,df.iloc[:, 21:]因为我的第一列兴趣从这里开始,但从这一点开始,我感到卡住了.我一直在尝试许多不同的方法,比如criteriafor和for循环.我知道这是一件微不足道的事情,但我花了好几个小时.任何帮助将非常感激.
for x in df:
a = df.iloc[:,21:].values()
if a.any[:, 12] > 0.9:
a[x] = 1
else:
a[x] = 0
sumdi = sum(a)
df.append(sumdi)
Run Code Online (Sandbox Code Playgroud) 我必须读取 excel 文件的每一行,并根据每行的内容进行计算。每行都分为几列,我的问题是我找不到访问这些列内容的方法。
我正在阅读以下行:
for i in df.index,:
print(df.loc[i])
Run Code Online (Sandbox Code Playgroud)
效果很好,但是当我尝试使用这种类型的索引访问 4h 列时,出现错误:
for i in df.index,:
print(df.loc[i][3])
Run Code Online (Sandbox Code Playgroud)
我很确定我以错误的方式处理索引问题,但我无法弄清楚如何解决它。
这是一个非常笼统的问题,我正在寻求解决方案,以应对以下情况:
我经常发现自己在数据框中创建了一个额外的列,并且我想使用类似以下的内容:
df['new_col'] = df['old_col_1']+df['old_col_2']
Run Code Online (Sandbox Code Playgroud)
但是,除非操作非常简单,否则它会给出“ TypeError:无法将序列转换为[class'whatever']类”,因此我必须使用笨拙的方法。例:
df = pd.DataFrame({'Year':[2018,2017,2016,2017,2016,2018,2018],'Month':[1,1,1,2,2,2,3],
'Value':[521,352,32,125,662,123,621]})
Run Code Online (Sandbox Code Playgroud)
我想要一个“日期”列,并且最终这样做:
from datetime import datetime as dt
df['Date'] = None
for i in df.index:
df1.loc[i,'Date'] = dt(df1.loc[i,'Year'],df1.loc[i,'variable'],1)
Run Code Online (Sandbox Code Playgroud)
在其他情况下,我发现自己在做:
datelist = []
for i in df.index:
datelist.append(dt(df1.loc[i,'Year'],df1.loc[i,'variable'],1))
df['Date'] = datelist
Run Code Online (Sandbox Code Playgroud)
显然,这只是一个示例,在很多情况下,我最终都会使用这两种方法。我是否正确地认为这些方法不是pythonic的?基于其他列生成稍微复杂的列的更好方法是什么?