小编Fiz*_*izi的帖子

pandas:groupby和aggregate,不会丢失已分组的列

我有一个pandas数据帧如下.对于每个Id,我可以有多个Name和Sub-id.

Id      NAME   SUB_ID
276956  A      5933
276956  B      5934
276956  C      5935
287266  D      1589
Run Code Online (Sandbox Code Playgroud)

我想压缩数据框,使每个id只有一行,每个id下的所有名称和sub_id在该行上显示为单数集

Id      NAME           SUB_ID
276956  set(A,B,C)     set(5933,5934,5935)
287266  set(D)         set(1589) 
Run Code Online (Sandbox Code Playgroud)

我尝试将id分组,然后聚合所有其他列

df.groupby('Id').agg(lambda x: set(x))
Run Code Online (Sandbox Code Playgroud)

但是在这样做时,结果数据帧没有Id列.当你执行groupby时,id将作为元组的第一个值返回,但我想当你聚合时会丢失.有没有办法获得我正在寻找的数据帧.这是groupby和aggregate而不会丢失已分组的列.

python group-by dataframe pandas

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

Pandas:在列的应用函数中使用索引值

我想知道是否有办法在对数据框的列使用应用时使用索引值。假设我有 df 像:

  col1  col2
0    a    [0,1,2]
1    b    [0,2]
2    c    [0,1,2]
Run Code Online (Sandbox Code Playgroud)

我想在 df.col2 上编写一个应用函数,以便它从 col2 中的列表中删除索引值,留下一个 df 如下:

  col1  col2
0    a    [1,2]
1    b    [0,2]
2    c    [0,1]
Run Code Online (Sandbox Code Playgroud)

索引值可能在也可能不在列表中。但如果它确实存在于列表中,则应将其删除。请注意,这不是实际用例,但与我需要的类似。我有

df.col2.apply(lambda x: f(x))
Run Code Online (Sandbox Code Playgroud)

在 f(x) 中,如果可能或解决方法,我希望能够访问 x 的索引值。我知道 df.apply() 可以处理列值,而 df.index.map() 可以处理索引。Pandas 中是否有一种方法可以将两者的用例结合到一个优雅的解决方案中。谢谢您的帮助。

更新:索引是一个整数值,它将以连续整数的方式受到约束。col2 将为每个索引提供一个列表。我想检查索引是否在该列表中,如果存在,则将其从列表中删除。因此,对于行索引 3,我们有列表 [27,36,3,9,7]。我想从列表中删除 3。该列表是无序的

python apply dataframe pandas

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

Kafka:使消费者组处于非活动状态

我正在运行一个数据管道,以便通过 jdbc connect 将数据从 sql db 读取到 kafka 主题中我使用 ES 的 kafka 接收器连接器将这些数据接收到 Elasticsearch 中

我需要重置这条管道。为此,我想重置正在侦听 jdbc 连接主题的消费者组。所以我运行以下命令

kafka-consumer-groups --reset-offsets --to-earliest --all-topics --execute --group mygroup --bootstrap-server myserver:9092
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

Error: Assignments can only be reset if the group 'mygroup' is inactive, but the current state is Stable.
Run Code Online (Sandbox Code Playgroud)

我停止了连接以使该组处于非活动状态,但这不起作用。所以我的问题是,如何让我的小组不活跃

apache-kafka kafka-consumer-api apache-kafka-connect

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

从main()在python中运行特定的单元测试

我试图只运行一个类中提供的单元测试中的单个测试。所以假设

class MytestSuite(unittest.TestCase):
    def test_false(self):
        a = False
        self.assertFalse(a, "Its false")

    def test_true(self):
        a = True
        self.assertTrue(a, "Its true")
Run Code Online (Sandbox Code Playgroud)

我只想运行test_false。根据本站点和在线提供的问答,我在主类中使用了以下代码行

if __name__ == "__main__":  #Indentation was wronng
    singletest = unittest.TestSuite()
    singletest.addTest(MytestSuite().test_false)
    unittest.TextTestRunner().run(singletest)
Run Code Online (Sandbox Code Playgroud)

尝试添加测试时,我不断收到错误消息。主要是:

  File "C:\Python27\Lib\unittest\case.py", line 189, in __init__
(self.__class__, methodName))
ValueError: no such test method in <class '__main__.MytestSuite'>: runTest
Run Code Online (Sandbox Code Playgroud)

我的班级需要特定的runTest方法吗?有没有一种方法可以运行可能属于不同套件的特定测试。例如:方法A属于套件类1B法属于套件类2。令人惊讶的是,事实证明这是很难在网上找到的。有许多通过命令行而不是从程序本身进行操作的示例。与往常一样,我们将提供任何帮助。

python python-unittest

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

Kafka Stream Chained LeftJoin - 在新消息之后再次处理以前的旧消息

我有一个流是其他流的组合

final KTable<Long, CompositeInfo> compositeInfoTable = compositeImcTable
    .leftJoin(
        compositeFundTable, 
        (CompositeImc cimc, CompositeFund cf) -> {
            CompositeInfo newCandidate = new CompositeInfo();
            if (cimc != null) {
                newCandidate.imcName = cimc.imcName;
                newCandidate.imcID = cimc.imcID;                                                                    
                if (cf != null) {
                    newCandidate.investments = cf.investments;
                }
            }
            return newCandidate;
        })
    .leftJoin(
        compositeGeographyTable, 
        (CompositeInfo cinfo, CompositeGeography cg) -> {
            if (cg != null) {
                cinfo.regions = cg.regions;
            }
            return cinfo;
        })
    .leftJoin(
        compositeSectorTable, 
        (CompositeInfo cinfo, CompositeSector cs) -> {
            if (cs != null) {
                cinfo.sectors = cs.sectors; …
Run Code Online (Sandbox Code Playgroud)

java left-join apache-kafka apache-kafka-streams

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

Kafka Connect Transformation:从json字段中提取一个Long值并将其作为键插入

关于JDBC连接器发布到的主题,我有以下json

{"APP_SETTING_ID":9,"APP_SETTING_NAME":"my_name","SETTING_KEY":"my_setting_key"}
Run Code Online (Sandbox Code Playgroud)

这是我的连接器文件

name=data.app_setting
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
poll.interval.ms=500
tasks.max=4
mode=timestamp
query=SELECT APP_SETTING_ID, APP_SETTING_NAME, SETTING_KEY,FROM MY_TABLE with (nolock)
timestamp.column.name=LAST_MOD_DATE
topic.prefix=data.app_setting

key.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=false
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false

transforms=InsertKey
transforms.InsertKey.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.InsertKey.fields=APP_SETTING_ID
Run Code Online (Sandbox Code Playgroud)

这确实添加了一个密钥,但它也像json格式

{"APP_SETTING_ID":9}
Run Code Online (Sandbox Code Playgroud)

虽然我只想9成为地图的关键。在数据库中,它存储为Long值。

transform jdbc apache-kafka apache-kafka-connect

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

Pandas:基于不同数据帧中的组的一个数据帧中的值的总和

我有一个数据框,其中包含公司及其部门

  Symbol             Sector
0    MCM             Industrials
1    AFT             Health Care
2    ABV             Health Care
3    AMN             Health Care
4    ACN  Information Technology
Run Code Online (Sandbox Code Playgroud)

我有另一个数据框,其中包含公司及其职位

  Symbol  Position
0    ABC  1864817
1    AAP -3298989
2    ABV -1556626
3    AXC  2436387
4    ABT   878535 
Run Code Online (Sandbox Code Playgroud)

我想要的是获得一个包含扇区聚合位置的数据框。因此,总结给定部门中所有公司的头寸。我可以通过以下方式单独执行此操作

df2[df2.Symbol.isin(df1.groupby('Sector').get_group('Industrials')['Symbol'].to_list())]  
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更有效的熊猫方法来做到这一点,而不是遍历 group_by 下的每个扇区。最终的数据框应如下所示:

     Sector                  Sum Position
0    Industrials             14567232
1    Health Care            -329173249
2    Information Technology -65742234
3    Energy                  6574352342
4    Pharma                  6342387658
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

python dataframe pandas pandas-groupby

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

Pandas:将数据帧列转换为 dict,col 标题作为 dict 键,col 值作为 dict 值

我有一个如下所示的数据框:

      NAME              ID 
155  ARBITRARY_A    697381   
208  ARBITRARY_B    691820   
265  ARBITRARY_C    691782   
272  ARBITRARY_D    695593 
Run Code Online (Sandbox Code Playgroud)

我想把它转换成一个字典列表,看起来像:

[{name:ARBITRARY_A, id:697381}, {name:ARBITRARY_B, id:691820},
 {name:ARBITRARY_C, id:691782}, {name:ARBITRARY_D, id:695593}]
Run Code Online (Sandbox Code Playgroud)

执行此操作的最快/最佳方法是什么?

python dictionary pandas

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

ElasticSearch:查找索引的索引率

我想知道在特定索引中索引(创建/更新)了多少文档。我查看了 _stats api,但没有多大意义。谁能告诉我如何计算索引率。它可以是每秒/分钟。谢谢

elasticsearch

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

渲染JSON而不替换Jinja中的字符

我有一些Python数据将被发送到JavaScript图表.我将其转储到JSON并将其传递给模板.当我渲染数据时,它包含html实体(&#34;)而不是引号,这是无效的.如何正确地将JSON数据从Python传递到JavaScript?

pieData = [{'color': '#400068', 'name': 'xyz', 'value': 10}, {'color': '#4a8624', 'name': 'abc', 'value': 30}]
render_template('index.html', piedata=json.dumps(pieData))
Run Code Online (Sandbox Code Playgroud)
var pieData2 = {{ piedata }};
// renders as
var pieData2 = [{&#34;color&#34;: &#34;#5461ae&#34;, &#34;name&#34;: &#34;fizi.yadav&#34;, &#34;value&#34;: 10}, {&#34;color&#34;: &#34;#e1dce4&#34;, &#34;name&#34;: &#34;surya.pradhan&#34;, &#34;value&#34;: 30}, {&#34;color&#34;: &#34;#7835f0&#34;, &#34;name&#34;: &#34;fred.hsu&#34;, &#34;value&#34;: 276}]
Run Code Online (Sandbox Code Playgroud)

python json jinja2 flask

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