相关疑难解决方法(0)

带有混合dtypes的pandas条件逻辑

我有一个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行,因为我在数据帧中需要它们.

知道如何解决这个问题吗?

python pandas

2
推荐指数
1
解决办法
306
查看次数

如何将值添加到熊猫数据框中的新列?

我想在 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)

我怎么做?

python dataframe pandas

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

如何选择数据框的特定列,并根据条件求和?

所以这是我想要做的类似情况

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)

python pandas

2
推荐指数
1
解决办法
68
查看次数

如何在熊猫数据框中逐行迭代并在其列中查找值

我必须读取 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)

我很确定我以错误的方式处理索引问题,但我无法弄清楚如何解决它。

python pandas

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

熊猫:智能创建新列

这是一个非常笼统的问题,我正在寻求解决方案,以应对以下情况:

我经常发现自己在数据框中创建了一个额外的列,并且我想使用类似以下的内容:

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的?基于其他列生成稍微复杂的列的更好方法是什么?

python-3.x pandas

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

标签 统计

pandas ×5

python ×4

dataframe ×1

python-3.x ×1