小编sac*_*cuL的帖子

基于另外两个列和表在pandas中创建列

table = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],
                 columns=['High','Middle','Low'],
                index=['Blue','Green','Red'])

df = pd.DataFrame(data=[['High','Blue'],
                    ['High','Green'],
                    ['Low','Red'],
                   ['Middle','Blue'],
                    ['Low','Blue'],
                    ['Low','Red']],
             columns=['A','B'])

>>> df
        A      B
0    High   Blue
1    High  Green
2     Low    Red
3  Middle   Blue
4     Low   Blue
5     Low    Red

>>> table
       High  Middle  Low
Blue      1       2    3
Green     4       5    6
Red       7       8    9
Run Code Online (Sandbox Code Playgroud)

我正在尝试添加第三列"C",它基于表中的值.所以第一行的值为1,第二行的值为4等.

如果这将是一维查找我会将表转换为字典并将使用df['C'] = df['A'].map(table).但是由于这是二维的,我无法弄清楚如何使用地图或应用.

理想情况下,我会将表转换为字典格式,因此我将其与json中的其他字典一起保存,但这不是必需的.

python mapping dictionary pandas

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

如何在字符串中以分号后的数字返回仅对应于某些日期?

['2017-07-17', '2017-07-27', '2017-07-17;14', '2017-07-17;5', '2017-07-19;11', '2017-07-19;13', '2017-07-23;4', '2017-07-27;-1']
Run Code Online (Sandbox Code Playgroud)

我想提取与日期对应的分号右边的所有数字.例如,对于日期'2017-07-17',我想返回列表[14,5].到目前为止2017-07-23我只想回来[4].

我怎样才能做到这一点?我只知道迭代索引来提取数字,但这不会得到我对应于某些日期的数字列表.

for eventIndex in range(2,len(path)): curr_date = path[eventIndex].split(';')[0]

只会得到我遍历​​的相应数字,但我根本不知道如何获得与每个日期对应的列表.

python string list

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

Pandas:在用作零时替换“-”,但在用作负数时不替换

我正在将 csv 文件读入熊猫数据帧。

df= pd.read_csv("table.csv", encoding = 'ISO-8859-1')
Run Code Online (Sandbox Code Playgroud)

我有一个名为“value”的列,当值为 nil 时,它包含“-”。我的目标是过滤掉此列中值为 nil 的所有行。

然而,当值为负时,也包含符号。

当我尝试:

    df['value'] = df['value'].str.replace(',', '')
    df['value'] = df['value'].str.replace('-', '0')
    df['value'] = df['value'].astype(str).astype(float)
    df= df[df['value'] !=0]
Run Code Online (Sandbox Code Playgroud)

当我去掉负号时,所有负数都变成正数。

但是,如果我不将“-”转换为“0”,则会出现错误:

ValueError: could not convert string to float: '-'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

python dataframe pandas

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

在python中提取2个字符串之间的子字符串

我有一个带有字符串列的 python 数据框,我想将其分成更多列。

DF 的某些行如下所示:

COLUMN

ORDP//NAME/iwantthispart/REMI/MORE TEXT
/REMI/SOMEMORETEXT
/ORDP//NAME/iwantthispart/ADDR/SOMEADRESS
/BENM//NAME/iwantthispart/REMI/SOMEMORETEXT
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要“/NAME/”之后到下一个“/”的所有内容。然而。并非每一行都有“/NAME/iwantthispart/”字段,如第二行所示。

我尝试过使用 split 函数,但最终得到了错误的结果。

mt['COLUMN'].apply(lambda x: x.split('/NAME/')[-1])
Run Code Online (Sandbox Code Playgroud)

这只是给了我 /NAME/ 部分之后的所有内容,并且在没有 /NAME/ 的情况下,它返回了完整的字符串给我。

有人有一些提示或解决方案吗?非常感谢帮助!(项目符号是为了使其更具可读性,实际上并不在数据中)。

python substring pandas

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

标签 统计

python ×4

pandas ×3

dataframe ×1

dictionary ×1

list ×1

mapping ×1

string ×1

substring ×1