bad*_*bit 11 python csv search dataframe pandas
我期待编写一个快速脚本,它将运行带有两列的csv文件,并为我提供行B,其中B列中的值从一个值切换到另一个值:
例如:
数据帧:
# | A | B
--+-----+-----
1 | 2 | 3
2 | 3 | 3
3 | 4 | 4
4 | 5 | 4
5 | 5 | 4
Run Code Online (Sandbox Code Playgroud)
会告诉我第2行和第3行之间发生了变化.我知道如何使用for循环获取这些值,但我希望有更多的pythonic方法来解决这个问题.
Kat*_*mar 19
您可以为差异创建新列
> df['C'] = df['B'].diff()
> print df
# A B C
0 1 2 3 NaN
1 2 3 3 0
2 3 4 4 1
3 4 5 4 0
4 5 5 4 0
> df_filtered = df[df['C'] != 0]
> print df_filtered
# A B C
2 3 4 4 1
Run Code Online (Sandbox Code Playgroud)
这将是您所需的行
小智 16
你可以使用它,它更快,希望它有帮助!
my_column_changes = df["MyStringColumn"].shift() != df["MyStringColumn"]
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以执行以下操作,这也适用于非数值:
>>> import pandas as pd
>>> df = pd.DataFrame({"Status": ["A","A","B","B","C","C","C"]})
>>> df["isStatusChanged"] = df["Status"].shift(1, fill_value=df["Status"].head(1)) != df["Status"]
>>> df
Status isStatusChanged
0 A False
1 A False
2 B True
3 B False
4 C True
5 C False
6 C False
>>>
Run Code Online (Sandbox Code Playgroud)
请注意,fill_value根据您的应用程序可能会有所不同。
| 归档时间: |
|
| 查看次数: |
14421 次 |
| 最近记录: |