小编Sun*_*Sun的帖子

当NaN存在于数据帧中时使用astype时出错

df
     A     B  
0   a=10   b=20.10
1   a=20   NaN
2   NaN    b=30.10
3   a=40   b=40.10
Run Code Online (Sandbox Code Playgroud)

我试过了 :

df['A'] = df['A'].str.extract('(\d+)').astype(int)
df['B'] = df['B'].str.extract('(\d+)').astype(float)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

ValueError:无法将float NaN转换为整数

和:

AttributeError:只能使用带有字符串值的.str访问器,它在pandas中使用np.object_ dtype

我该如何解决 ?

pandas

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

使用itertuples迭代pandas数据帧

我正在使用itertuples迭代一个pandas数据帧.我也想捕获行号.迭代时:

示例代码:

for row in df.itertuples():
    print row['name']
Run Code Online (Sandbox Code Playgroud)

预期产量:

1 larry
2 barry
3 michael
Run Code Online (Sandbox Code Playgroud)

这里1,2,3是行号.我想避免使用计数器并获取行号.有没有简单的方法来实现这个使用熊猫?

python pandas

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

迭代pandas数据帧并更新值 - AttributeError:无法设置属性

我试图迭代一个pandas数据帧并更新值,如果条件满足,但我收到一个错误.

for line, row in enumerate(df.itertuples(), 1):
    if row.Qty:
        if row.Qty == 1 and row.Price == 10:
            row.Buy = 1
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

熊猫数据帧到键值对

将以下熊猫数据帧转换为键值对的最佳方法是什么

前 :

datetime             name    qty     price
2017-11-01 10:20     apple    5       1
2017-11-01 11:20     pear     2       1.5
2017-11-01 13:20     banana   10      5
Run Code Online (Sandbox Code Playgroud)

后 :

2017-11-01 10:20 name=apple qty=5 price=1
2017-11-01 11:20 name=pear  qty=2 price=1.5
2017-11-01 13:20 name=banana qty=10 price=5
Run Code Online (Sandbox Code Playgroud)

请注意,我不希望在我的输出中使用 datetime 键。

pandas

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

使用matplotlib绘制百分位数

我有三个数据框df1,df2和df3。我将它们合并到一个数据帧df中。现在,我想在数据框中找到每个日期的最小值,5%,25%,中位数,90%和最大值,并将其绘制(每个日期的线图),其中X轴具有百分位数,Y轴具有值。

df1
    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23

df2
    date          value
1   2017-11-07    110.20
2   2017-11-07    500.26
3   2017-11-07    200.16
4   2017-11-07    350.01
5   2017-11-07    89.20

df3
    date          value
1   2017-11-08    101.45 
2   2017-11-08    160.34
3   2017-11-08    41.54
4   2017-11-08    192.42
5   2017-11-08    111.12


df

    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23
5   2017-11-07    110.20
6   2017-11-07    500.26
7 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

Pyspark - from_unixtime 未显示正确的日期时间

我想将包含纪元时间的时间戳列转换为日期时间(人类可读)。from_unixtime没有给我正确的日期和时间。请帮忙。

df = spark.createDataFrame([('1535934855077532656',), ('1535934855077532656',),('1535935539886503614',)], ['timestamp',])

df.show()
Run Code Online (Sandbox Code Playgroud)
df = spark.createDataFrame([('1535934855077532656',), ('1535934855077532656',),('1535935539886503614',)], ['timestamp',])

df.show()
Run Code Online (Sandbox Code Playgroud)
+-------------------+
|          timestamp|
+-------------------+
|1535934855077532656|
|1535934855077532656|
|1535935539886503614|
+-------------------+
Run Code Online (Sandbox Code Playgroud)
df.withColumn('datetime',from_unixtime(df.timestamp,"yyyy-MM-dd HH:mm:ss:SSS")).select(['timestamp','datetime']).show(15,False)
Run Code Online (Sandbox Code Playgroud)

timestamp apache-spark apache-spark-sql pyspark

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